armadeus-commitlog Mailing List for armadeus (Page 151)
Brought to you by:
sszy
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(43) |
Feb
(8) |
Mar
(7) |
Apr
(8) |
May
(14) |
Jun
(6) |
Jul
(4) |
Aug
(17) |
Sep
(18) |
Oct
(19) |
Nov
(52) |
Dec
(30) |
| 2008 |
Jan
(6) |
Feb
(6) |
Mar
(15) |
Apr
(22) |
May
(13) |
Jun
(11) |
Jul
(41) |
Aug
(10) |
Sep
(14) |
Oct
(21) |
Nov
(4) |
Dec
(66) |
| 2009 |
Jan
(67) |
Feb
(57) |
Mar
(90) |
Apr
(54) |
May
(64) |
Jun
(76) |
Jul
(14) |
Aug
(18) |
Sep
(18) |
Oct
(20) |
Nov
(15) |
Dec
(36) |
| 2010 |
Jan
(28) |
Feb
(25) |
Mar
(32) |
Apr
(23) |
May
(22) |
Jun
(62) |
Jul
(36) |
Aug
(16) |
Sep
(12) |
Oct
(20) |
Nov
(44) |
Dec
(25) |
| 2011 |
Jan
(36) |
Feb
(49) |
Mar
(28) |
Apr
(38) |
May
(26) |
Jun
(52) |
Jul
(33) |
Aug
(32) |
Sep
(19) |
Oct
(26) |
Nov
(13) |
Dec
(32) |
| 2012 |
Jan
(38) |
Feb
(34) |
Mar
(91) |
Apr
(35) |
May
(31) |
Jun
(72) |
Jul
(23) |
Aug
(13) |
Sep
(33) |
Oct
(47) |
Nov
(18) |
Dec
(22) |
| 2013 |
Jan
(31) |
Feb
(22) |
Mar
(26) |
Apr
(11) |
May
(38) |
Jun
(15) |
Jul
(37) |
Aug
(68) |
Sep
(34) |
Oct
(11) |
Nov
(26) |
Dec
(31) |
| 2014 |
Jan
(60) |
Feb
(55) |
Mar
(21) |
Apr
(31) |
May
(17) |
Jun
(35) |
Jul
(24) |
Aug
(17) |
Sep
(11) |
Oct
(23) |
Nov
(10) |
Dec
(23) |
| 2015 |
Jan
(15) |
Feb
(34) |
Mar
(46) |
Apr
(23) |
May
(12) |
Jun
(14) |
Jul
(18) |
Aug
(22) |
Sep
(6) |
Oct
(2) |
Nov
(1) |
Dec
(6) |
| 2016 |
Jan
(5) |
Feb
(7) |
Mar
(10) |
Apr
(10) |
May
(17) |
Jun
(6) |
Jul
(4) |
Aug
(6) |
Sep
(22) |
Oct
(8) |
Nov
(9) |
Dec
(5) |
| 2017 |
Jan
(11) |
Feb
(12) |
Mar
(27) |
Apr
(9) |
May
(1) |
Jun
(5) |
Jul
(11) |
Aug
(10) |
Sep
(6) |
Oct
(10) |
Nov
(4) |
Dec
(6) |
| 2018 |
Jan
(6) |
Feb
(13) |
Mar
(9) |
Apr
(7) |
May
(10) |
Jun
(9) |
Jul
(21) |
Aug
(13) |
Sep
(10) |
Oct
(4) |
Nov
(6) |
Dec
(1) |
| 2019 |
Jan
(6) |
Feb
(2) |
Mar
(5) |
Apr
(6) |
May
(19) |
Jun
(14) |
Jul
(18) |
Aug
(3) |
Sep
(5) |
Oct
(7) |
Nov
(8) |
Dec
(4) |
| 2020 |
Jan
(10) |
Feb
(3) |
Mar
(9) |
Apr
(7) |
May
(2) |
Jun
(18) |
Jul
(3) |
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
(1) |
| 2021 |
Jan
(9) |
Feb
(6) |
Mar
(4) |
Apr
(11) |
May
(7) |
Jun
(5) |
Jul
(2) |
Aug
(4) |
Sep
(10) |
Oct
(9) |
Nov
(5) |
Dec
|
| 2022 |
Jan
(2) |
Feb
(12) |
Mar
(3) |
Apr
(5) |
May
(1) |
Jun
(3) |
Jul
(2) |
Aug
(1) |
Sep
(4) |
Oct
(4) |
Nov
(1) |
Dec
(3) |
| 2023 |
Jan
(5) |
Feb
(3) |
Mar
(3) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(3) |
Aug
(2) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(4) |
| 2024 |
Jan
(2) |
Feb
(3) |
Mar
(8) |
Apr
(4) |
May
(1) |
Jun
(13) |
Jul
(7) |
Aug
(1) |
Sep
(6) |
Oct
(5) |
Nov
(11) |
Dec
(7) |
| 2025 |
Jan
(3) |
Feb
(1) |
Mar
(6) |
Apr
(4) |
May
(4) |
Jun
(1) |
Jul
(1) |
Aug
(7) |
Sep
(4) |
Oct
(4) |
Nov
(4) |
Dec
(1) |
| 2026 |
Jan
(3) |
Feb
(7) |
Mar
(3) |
Apr
(1) |
May
(6) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <ar...@us...> - 2007-03-18 12:50:30
|
Revision: 579
http://armadeus.svn.sourceforge.net/armadeus/?rev=579&view=rev
Author: artemys
Date: 2007-03-18 05:49:33 -0700 (Sun, 18 Mar 2007)
Log Message:
-----------
[BUILDROOT] First commit for snex9x emulator integration
Added Paths:
-----------
trunk/buildroot/package/snes9x/
trunk/buildroot/package/snes9x/Config.in
trunk/buildroot/package/snes9x/snes9x-compile.patch
trunk/buildroot/package/snes9x/snes9x.mk
Added: trunk/buildroot/package/snes9x/Config.in
===================================================================
--- trunk/buildroot/package/snes9x/Config.in (rev 0)
+++ trunk/buildroot/package/snes9x/Config.in 2007-03-18 12:49:33 UTC (rev 579)
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_SNES9X
+ bool "Snes9X"
+ depends on BR2_PACKAGE_SDL
+ default n
+ help
+
+ Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES) emulator. It basically allows you
+ to play most games designed for the SNES and Super Famicom Nintendo game systems on your PC or Workstation;
+ which includes some real gems that were only ever released in Japan.
+
+ http://www.snes9x.com/
Added: trunk/buildroot/package/snes9x/snes9x-compile.patch
===================================================================
--- trunk/buildroot/package/snes9x/snes9x-compile.patch (rev 0)
+++ trunk/buildroot/package/snes9x/snes9x-compile.patch 2007-03-18 12:49:33 UTC (rev 579)
@@ -0,0 +1,275 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- snes9x-sdl-1.39/unix/svga.cpp~compile
++++ snes9x-sdl-1.39/unix/svga.cpp
+@@ -48,7 +48,7 @@
+ #include <stdlib.h>
+ #include <signal.h>
+
+-#include "sdl.h"
++#include <SDL.h>
+
+ #include "snes9x.h"
+ #include "memmap.h"
+--- snes9x-sdl-1.39/unix/unix.cpp~compile
++++ snes9x-sdl-1.39/unix/unix.cpp
+@@ -50,7 +50,7 @@
+ #include <sys/types.h>
+ #include <ctype.h>
+ #include <dirent.h>
+-#include <sdl.h>
++#include <SDL.h>
+ #include "keydef.h"
+
+ #undef USE_THREADS
+@@ -189,8 +189,7 @@
+ }
+
+ /*#include "cheats.h"*/
+-extern "C"
+-int SDL_main (int argc, char **argv)
++int main (int argc, char **argv)
+ {
+ if (argc < 2)
+ S9xUsage ();
+--- /dev/null
++++ snes9x-sdl-1.39/unzip/unzipP.h
+@@ -0,0 +1,124 @@
++#ifndef _UNZIPP_H_
++#define _UNZIPP_H_
++
++#include "unzip.h"
++
++#ifndef local
++#define local static
++#endif
++/* compile with -Dlocal if your debugger can't find static symbols */
++
++
++
++#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \
++ !defined(CASESENSITIVITYDEFAULT_NO)
++#define CASESENSITIVITYDEFAULT_NO
++#endif
++
++
++#ifndef UNZ_BUFSIZE
++#define UNZ_BUFSIZE (16384)
++#endif
++
++#ifndef UNZ_MAXFILENAMEINZIP
++#define UNZ_MAXFILENAMEINZIP (256)
++#endif
++
++#ifndef ALLOC
++#define ALLOC(size) (malloc(size))
++#endif
++#ifndef TRYFREE
++#define TRYFREE(p) {if (p) free(p);}
++#endif
++
++#define SIZECENTRALDIRITEM (0x2e)
++#define SIZEZIPLOCALHEADER (0x1e)
++
++
++/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */
++
++#ifndef SEEK_CUR
++#define SEEK_CUR 1
++#endif
++
++#ifndef SEEK_END
++#define SEEK_END 2
++#endif
++
++#ifndef SEEK_SET
++#define SEEK_SET 0
++#endif
++
++/* unz_file_info_interntal contain internal info about a file in zipfile */
++typedef struct unz_file_info_internal_s
++{
++ uLong offset_curfile; /* relative offset of local header 4
++ * bytes */
++} unz_file_info_internal;
++
++
++/*
++ * file_in_zip_read_info_s contain internal information about a file in
++ * zipfile, when reading and decompress it
++ */
++typedef struct
++{
++ char *read_buffer;/* internal buffer for compressed data */
++ z_stream stream; /* zLib stream structure for inflate */
++
++ uLong pos_in_zipfile; /* position in byte on the zipfile,
++ * for fseek */
++ uLong stream_initialised; /* flag set if stream structure is
++ * initialised */
++
++ uLong offset_local_extrafield; /* offset of the local extra
++ * field */
++ uInt size_local_extrafield; /* size of the local extra
++ * field */
++ uLong pos_local_extrafield; /* position in the local
++ * extra field in read */
++
++ uLong crc32; /* crc32 of all data uncompressed */
++ uLong crc32_wait; /* crc32 we must obtain after decompress all */
++ uLong rest_read_compressed; /* number of byte to be
++ * decompressed */
++ uLong rest_read_uncompressed; /* number of byte to be
++ * obtained after decomp */
++ FILE *file; /* io structore of the zipfile */
++ uLong compression_method; /* compression method (0==store) */
++ uLong byte_before_the_zipfile; /* byte before the zipfile,
++ * (>0 for sfx) */
++} file_in_zip_read_info_s;
++
++
++/*
++ * unz_s contain internal information about the zipfile
++ */
++typedef struct
++{
++ FILE *file; /* io structore of the zipfile */
++ unz_global_info gi; /* public global information */
++ uLong byte_before_the_zipfile; /* byte before the zipfile,
++ * (>0 for sfx) */
++ uLong num_file; /* number of the current file in the zipfile */
++ uLong pos_in_central_dir; /* pos of the current file in the
++ * central dir */
++ uLong current_file_ok; /* flag about the usability of the
++ * current file */
++ uLong central_pos;/* position of the beginning of the central
++ * dir */
++
++ uLong size_central_dir; /* size of the central directory */
++ uLong offset_central_dir; /* offset of start of central
++ * directory with respect to the
++ * starting disk number */
++
++ unz_file_info cur_file_info; /* public info about the current file
++ * in zip */
++ unz_file_info_internal cur_file_info_internal; /* private info about it */
++ file_in_zip_read_info_s *pfile_in_zip_read; /* structure about the
++ * current file if we are
++ * decompressing it */
++} unz_s;
++
++#endif
+--- snes9x-sdl-1.39/Makefile~compile
++++ snes9x-sdl-1.39/Makefile
+@@ -53,12 +53,12 @@
+
+ ifdef THREAD_SOUND
+ CPUDEFINES += -DUSE_THREADS
+-EXTRALIBS += -lpthread -L/usr/local/lib -lcygipc
++EXTRALIBS += -lpthread -lcygipc
+ endif
+
+ ifdef GLIDE
+ GLIDEOBJS = unix/glide.o
+-GLIDEDEFINES = -DUSE_GLIDE -I/usr/include/glide
++GLIDEDEFINES = -DUSE_GLIDE
+ GLIDELIBS = -lglide2x
+ GLIDEDEPENDS=use_glide
+ GLIDENO_DEPENDS=no_glide
+@@ -82,14 +82,12 @@
+ CC = gcc
+ NASM = nasm
+
+-INCLUDES=-I/usr/local/include
++INCLUDES=
+
+-OPTIMISE= -D_ZAURUS -Os -ffast-math -fstrict-aliasing -fomit-frame-pointer -mcpu=strongarm1100 -mtune=strongarm1100
++OPTIMISE= -D_ZAURUS -Os -ffast-math -fstrict-aliasing -fomit-frame-pointer
+ CCFLAGS = $(OPTIMISE) \
+--I/opt/Qtopia/include/SDL \
+ -I. \
+ -Iunzip \
+--Isdl \
+ -D__linux \
+ -DZLIB \
+ -DVAR_CYCLES \
+@@ -114,7 +112,7 @@
+
+ .SUFFIXES: .o .cpp .c .cc .h .m .i .S .asm .obj
+
+-LDLIBS = -L/opt/Qtopia/sharp/lib
++LDLIBS=
+
+ ifdef GLIDE
+ all: offsets gsnes9x
+@@ -146,7 +144,7 @@
+ $(RM) $(OPENGLNO_DEPENDS)
+
+ snes9x: $(OBJECTS)
+- $(CCC) $(INCLUDES) -o $@ $(OBJECTS) $(EXTRALIBS) -L/opt/QtPalmtop/lib/ -lSDL -lSDLmain $(LDLIBS) -lqpe -lqte -lpthread
++ $(CC) $(INCLUDES) -o $@ $(OBJECTS) $(EXTRALIBS) $(LDLIBS) -lz -lpthread
+
+ gsnes9x: $(OBJECTS) unix/x11.o unix/glide.o
+ $(CCC) $(INCLUDES) -o $@ $(OBJECTS) unix/x11.o unix/glide.o $(LDLIBS) $(GLIDELIBS) -lXext -lX11 -lXxf86dga -lXxf86vm $(EXTRALIBS) -lz -lm
+--- snes9x-sdl-1.39/snapshot.cpp~compile
++++ snes9x-sdl-1.39/snapshot.cpp
+@@ -671,7 +671,7 @@
+ fields [i].type);
+ }
+
+- uint8 *block = new uint8 [len];
++ uint8 *block = (uint8*) malloc(len);
+ uint8 *ptr = block;
+ uint16 word;
+ uint32 dword;
+@@ -739,7 +739,7 @@
+ }
+
+ FreezeBlock (stream, name, block, len);
+- delete block;
++ free(block);
+ }
+
+ void FreezeBlock (STREAM stream, char *name, uint8 *block, int size)
+@@ -767,7 +767,7 @@
+ fields [i].type);
+ }
+
+- uint8 *block = new uint8 [len];
++ uint8 *block = (uint8*) malloc(len);
+ uint8 *ptr = block;
+ uint16 word;
+ uint32 dword;
+@@ -776,7 +776,7 @@
+
+ if ((result = UnfreezeBlock (stream, name, block, len)) != SUCCESS)
+ {
+- delete block;
++ free(block);
+ return (result);
+ }
+
+@@ -841,7 +841,7 @@
+ }
+ }
+
+- delete block;
++ free(block);
+ return (result);
+ }
+
+@@ -865,9 +865,9 @@
+
+ if (rem)
+ {
+- char *junk = new char [rem];
++ char *junk = (char*) malloc(rem);
+ READ_STREAM (junk, rem, stream);
+- delete junk;
++ free(junk);
+ }
+
+ return (SUCCESS);
Added: trunk/buildroot/package/snes9x/snes9x.mk
===================================================================
--- trunk/buildroot/package/snes9x/snes9x.mk (rev 0)
+++ trunk/buildroot/package/snes9x/snes9x.mk 2007-03-18 12:49:33 UTC (rev 579)
@@ -0,0 +1,83 @@
+#############################################################
+#
+# SNES9X SNES emulator
+#
+#############################################################
+SNES9X_VERSION:=1.39
+SNES9X_SOURCE:=snes9x-sdl-$(SNES9X_VERSION).tar.bz2
+SNES9X_SITE:=http://www.vanille.de/mirror/
+# roms: http://rtgamer.free.fr/index.php?pg=2&rub=sn
+SNES9X_CAT:=bzcat
+SNES9X_DIR:=$(BUILD_DIR)/snes9x-sdl-$(SNES9X_VERSION)
+
+#SNES9X_VERSION:=1.43
+#SNES9X_SOURCE:=snes9x-$(SNES9X_VERSION)-src.tar.gz
+#SNES9X_SITE:=http://vincent.grigorieff.free.fr/snes9x/
+#SNES9X_CAT:=$(ZCAT)
+#SNES9X_DIR:=$(BUILD_DIR)/snes9x-$(SNES9X_VERSION)-src
+
+$(DL_DIR)/$(SNES9X_SOURCE):
+ $(WGET) -P $(DL_DIR) $(SNES9X_SITE)/$(SNES9X_SOURCE)
+
+snes9x-source: $(DL_DIR)/$(SNES9X_SOURCE)
+
+$(SNES9X_DIR)/.unpacked: $(DL_DIR)/$(SNES9X_SOURCE)
+ $(SNES9X_CAT) $(DL_DIR)/$(SNES9X_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ touch $@
+
+$(SNES9X_DIR)/.patched: $(SNES9X_DIR)/.unpacked
+ toolchain/patch-kernel.sh $(SNES9X_DIR) package/snes9x/ snes9x-$(SNES9X_VERSION)\*.patch
+ touch $@
+
+$(SNES9X_DIR)/.configured: $(SNES9X_DIR)/.patched
+# For v1.49 only !!
+# (cd $(SNES9X_DIR)/snes9x; \
+# $(TARGET_CONFIGURE_OPTS) \
+# CFLAGS="$(TARGET_CFLAGS) " \
+# ./configure \
+# --target=$(GNU_TARGET_NAME) \
+# --host=$(GNU_TARGET_NAME) \
+# --build=$(GNU_HOST_NAME) \
+# --prefix=$(STAGING_DIR)/usr \
+# --with-sdl-prefix=$(STAGING_DIR)/usr \
+# --with-sdl-exec-prefix=$(STAGING_DIR)/usr \
+# --disable-sdltest \
+# --without-x \
+# --without-opengl \
+# --without-nasm \
+# --without-mmx );
+ touch $@
+
+$(SNES9X_DIR)/snes9x: $(SNES9X_DIR)/.configured
+# $(MAKE) -C $(SNES9X_DIR)/snes9x
+ $(MAKE) -C $(SNES9X_DIR) \
+ CC="$(STAGING_DIR)/bin/arm-linux-gcc" CCC="$(STAGING_DIR)/bin/arm-linux-c++ -fno-rtti -fno-exceptions" \
+ INCLUDES="-I$(STAGING_DIR)/usr/lib/include `$(STAGING_DIR)/usr/bin/sdl-config --cflags`" \
+ LDLIBS="`$(STAGING_DIR)/usr/bin/sdl-config --libs`"
+ touch $@
+
+# $(STAGING_DIR)/usr/lib/libSDL.so: $(SNES9X_DIR)/.compiled
+# $(MAKE) -C $(SNES9X_DIR) install
+# touch -c $(STAGING_DIR)/usr/lib/libSDL.so
+#
+# $(TARGET_DIR)/usr/lib/libSDL.so: $(STAGING_DIR)/usr/lib/libSDL.so
+# cp -dpf $(STAGING_DIR)/usr/lib/libSDL*.so* $(TARGET_DIR)/usr/lib/
+# -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libSDL.so
+
+SNES9X snes9x: sdl $(SNES9X_DIR)/snes9x
+
+snes9x-clean:
+# $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(SNES9X_DIR) uninstall
+ -$(MAKE) -C $(SNES9X_DIR) clean
+
+snes9x-dirclean:
+ rm -rf $(SNES9X_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_SNES9X)),y)
+TARGETS+=snes9x
+endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-03-12 23:00:58
|
Revision: 578
http://armadeus.svn.sourceforge.net/armadeus/?rev=578&view=rev
Author: artemys
Date: 2007-03-12 16:00:36 -0700 (Mon, 12 Mar 2007)
Log Message:
-----------
[BUILDROOT] Better PrBoom (Doom clone) installation
Modified Paths:
--------------
trunk/buildroot/package/prboom/prboom.mk
Modified: trunk/buildroot/package/prboom/prboom.mk
===================================================================
--- trunk/buildroot/package/prboom/prboom.mk 2007-03-03 20:53:13 UTC (rev 577)
+++ trunk/buildroot/package/prboom/prboom.mk 2007-03-12 23:00:36 UTC (rev 578)
@@ -8,14 +8,21 @@
PRBOOM_SITE:=http://downloads.sourceforge.net/prboom
PRBOOM_CAT:=zcat
PRBOOM_DIR:=$(BUILD_DIR)/prboom-$(PRBOOM_VERSION)
+DOOM_SITE:=ftp://ftp.idsoftware.com/idstuff/doom
+PRBOOM_DATA:=doom-1.8.wad.gz
$(DL_DIR)/$(PRBOOM_SOURCE):
$(WGET) -P $(DL_DIR) $(PRBOOM_SITE)/$(PRBOOM_SOURCE)
-sdl_prboom-source: $(DL_DIR)/$(PRBOOM_SOURCE)
+prboom-source: $(DL_DIR)/$(PRBOOM_SOURCE)
-$(PRBOOM_DIR)/.unpacked: $(DL_DIR)/$(PRBOOM_SOURCE)
+$(DL_DIR)/$(PRBOOM_DATA):
+ $(WGET) -P $(DL_DIR) $(DOOM_SITE)/$(PRBOOM_DATA)
+
+$(PRBOOM_DIR)/.unpacked: $(DL_DIR)/$(PRBOOM_SOURCE) $(DL_DIR)/$(PRBOOM_DATA)
$(PRBOOM_CAT) $(DL_DIR)/$(PRBOOM_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ # all *.wad should be in the same place
+ $(PRBOOM_CAT) $(DL_DIR)/$(PRBOOM_DATA) > $(PRBOOM_DIR)/data/doom1.wad
touch $@
$(PRBOOM_DIR)/.configured: $(PRBOOM_DIR)/.unpacked
@@ -37,26 +44,28 @@
touch $@
# !!!! ++ modif de config.status pour virer les /usr/include et /usr/lib en dur......!!!!!!!!!!
-$(PRBOOM_DIR)/.compiled: $(PRBOOM_DIR)/.configured
- $(MAKE) -C $(PRBOOM_DIR)
- touch $@
+$(PRBOOM_DIR)/src/prboom: $(PRBOOM_DIR)/.configured
+ $(MAKE) -C $(PRBOOM_DIR)
-$(STAGING_DIR)/usr/lib/prdoom.so: $(PRBOOM_DIR)/.compiled
+$(STAGING_DIR)/usr/games/$(GNU_TARGET_NAME)-prboom: $(PRBOOM_DIR)/src/prboom
$(MAKE) -C $(PRBOOM_DIR) install
- touch -c $@
-$(TARGET_DIR)/usr/lib/prdoom.so: $(STAGING_DIR)/usr/lib/prdoom.so
-#copier tous les .wad dans data (là où est prdoom.wad)
- cp -dpf $(STAGING_DIR)/usr/lib/libSDL_image*.so* $(TARGET_DIR)/usr/lib/
- -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libSDL_image.so
+$(TARGET_DIR)/usr/games/prboom: $(STAGING_DIR)/usr/games/$(GNU_TARGET_NAME)-prboom
+ mkdir -p $(TARGET_DIR)/usr/games/
+ mkdir -p $(TARGET_DIR)/usr/share/games/doom/
+ cp -dpf $(STAGING_DIR)/usr/games/$(GNU_TARGET_NAME)-prboom $@
+ cp -dpf $(PRBOOM_DIR)/data/*.wad $(TARGET_DIR)/usr/share/games/doom/
+ -$(STRIP) --strip-unneeded $@
-PRBOOM sdl_prboom: sdl $(PRBOOM_DIR)/.compiled
+PRBOOM prboom: sdl sdl_net sdl_mixer $(TARGET_DIR)/usr/games/prboom
-sdl_prboom-clean:
+prboom-clean:
$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(PRBOOM_DIR) uninstall
+ rm -rf $(TARGET_DIR)/usr/share/games/doom/
+ rm -rf $(TARGET_DIR)/usr/games/
-$(MAKE) -C $(PRBOOM_DIR) clean
-sdl_prboom-dirclean:
+prboom-dirclean:
rm -rf $(PRBOOM_DIR)
#############################################################
@@ -65,5 +74,5 @@
#
#############################################################
ifeq ($(strip $(BR2_PACKAGE_PRBOOM)),y)
-TARGETS+=sdl_prboom
+TARGETS+=prboom
endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-03-03 20:53:14
|
Revision: 577
http://armadeus.svn.sourceforge.net/armadeus/?rev=577&view=rev
Author: artemys
Date: 2007-03-03 12:53:13 -0800 (Sat, 03 Mar 2007)
Log Message:
-----------
[BUILDROOT] Add SDL_mixer, SDL_net & PrBoom support (part2)
Added Paths:
-----------
trunk/patches/015-buildroot-sdl-mixer-net-config.diff
trunk/patches/016-buildroot-prboom.diff
Added: trunk/patches/015-buildroot-sdl-mixer-net-config.diff
===================================================================
--- trunk/patches/015-buildroot-sdl-mixer-net-config.diff (rev 0)
+++ trunk/patches/015-buildroot-sdl-mixer-net-config.diff 2007-03-03 20:53:13 UTC (rev 577)
@@ -0,0 +1,35 @@
+--- buildroot.ori/package/sdl/Config.in 2007-03-03 21:28:52.000000000 +0100
++++ buildroot/package/sdl/Config.in 2007-03-02 21:22:13.000000000 +0100
+@@ -15,7 +15,6 @@
+ and supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV.
+
+ http://www.libsdl.org/projects/SDL_image/
+-
+
+ config BR2_PACKAGE_SDL_TTF
+ bool "SDL_ttf"
+@@ -26,4 +25,23 @@
+ This is a sample library which allows you to use TrueType fonts in your SDL applications.
+
+ http://www.libsdl.org/projects/SDL_ttf/
+-
++
++config BR2_PACKAGE_SDL_MIXER
++ bool "SDL_Mixer"
++ depends on BR2_PACKAGE_SDL
++ default n
++ help
++
++ SDL_mixer is a sample multi-channel audio mixer library.
++
++ http://www.libsdl.org/projects/SDL_mixer/
++
++config BR2_PACKAGE_SDL_NET
++ bool "SDL_Net"
++ depends on BR2_PACKAGE_SDL
++ default n
++ help
++
++ This is a small sample cross-platform networking library, with a sample chat client and server application.
++
++ http://www.libsdl.org/projects/SDL_net/
Added: trunk/patches/016-buildroot-prboom.diff
===================================================================
--- trunk/patches/016-buildroot-prboom.diff (rev 0)
+++ trunk/patches/016-buildroot-prboom.diff 2007-03-03 20:53:13 UTC (rev 577)
@@ -0,0 +1,10 @@
+--- buildroot.ori/package/Config.in 2007-03-03 21:28:52.000000000 +0100
++++ buildroot/package/Config.in 2007-03-02 21:57:27.000000000 +0100
+@@ -118,6 +118,7 @@
+ source "package/portage/Config.in"
+ source "package/portmap/Config.in"
+ source "package/pppd/Config.in"
++source "package/prboom/Config.in"
+ source "package/procps/Config.in"
+ source "package/psmisc/Config.in"
+ source "package/python/Config.in"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-03-03 20:48:00
|
Revision: 576
http://armadeus.svn.sourceforge.net/armadeus/?rev=576&view=rev
Author: artemys
Date: 2007-03-03 12:48:00 -0800 (Sat, 03 Mar 2007)
Log Message:
-----------
[BUILDROOT] Correct small error in PrBoom Config.in
Modified Paths:
--------------
trunk/buildroot/package/prboom/Config.in
Modified: trunk/buildroot/package/prboom/Config.in
===================================================================
--- trunk/buildroot/package/prboom/Config.in 2007-03-02 17:44:52 UTC (rev 575)
+++ trunk/buildroot/package/prboom/Config.in 2007-03-03 20:48:00 UTC (rev 576)
@@ -1,6 +1,6 @@
config BR2_PACKAGE_PRBOOM
bool "PrBoom"
- depends on BR2_PACKAGE_SDL BR2_PACKAGE_SDL_MIXER BR2_PACKAGE_SDL_NET
+ depends on BR2_PACKAGE_SDL && BR2_PACKAGE_SDL_MIXER && BR2_PACKAGE_SDL_NET
default n
help
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-03-02 17:45:31
|
Revision: 575
http://armadeus.svn.sourceforge.net/armadeus/?rev=575&view=rev
Author: artemys
Date: 2007-03-02 09:44:52 -0800 (Fri, 02 Mar 2007)
Log Message:
-----------
[BUILDROOT] Add support for PrBoom
Added Paths:
-----------
trunk/buildroot/package/prboom/
trunk/buildroot/package/prboom/Config.in
trunk/buildroot/package/prboom/prboom.mk
trunk/buildroot/package/sdl/sdl_mixer.mk
trunk/buildroot/package/sdl/sdl_net.mk
Added: trunk/buildroot/package/prboom/Config.in
===================================================================
--- trunk/buildroot/package/prboom/Config.in (rev 0)
+++ trunk/buildroot/package/prboom/Config.in 2007-03-02 17:44:52 UTC (rev 575)
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_PRBOOM
+ bool "PrBoom"
+ depends on BR2_PACKAGE_SDL BR2_PACKAGE_SDL_MIXER BR2_PACKAGE_SDL_NET
+ default n
+ help
+
+ PrBoom is the culmination of years of work by various people and projects on the Doom source code.
+
+ http://prboom.sourceforge.net/about.html
Added: trunk/buildroot/package/prboom/prboom.mk
===================================================================
--- trunk/buildroot/package/prboom/prboom.mk (rev 0)
+++ trunk/buildroot/package/prboom/prboom.mk 2007-03-02 17:44:52 UTC (rev 575)
@@ -0,0 +1,69 @@
+#############################################################
+#
+# PrBoom
+#
+#############################################################
+PRBOOM_VERSION:=2.2.6
+PRBOOM_SOURCE:=prboom-$(PRBOOM_VERSION).tar.gz
+PRBOOM_SITE:=http://downloads.sourceforge.net/prboom
+PRBOOM_CAT:=zcat
+PRBOOM_DIR:=$(BUILD_DIR)/prboom-$(PRBOOM_VERSION)
+
+$(DL_DIR)/$(PRBOOM_SOURCE):
+ $(WGET) -P $(DL_DIR) $(PRBOOM_SITE)/$(PRBOOM_SOURCE)
+
+sdl_prboom-source: $(DL_DIR)/$(PRBOOM_SOURCE)
+
+$(PRBOOM_DIR)/.unpacked: $(DL_DIR)/$(PRBOOM_SOURCE)
+ $(PRBOOM_CAT) $(DL_DIR)/$(PRBOOM_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ touch $@
+
+$(PRBOOM_DIR)/.configured: $(PRBOOM_DIR)/.unpacked
+ (cd $(PRBOOM_DIR); \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS) " \
+ LDFLAGS="-Wl,-rpath=$(STAGING_DIR)/lib/" \
+ ./configure \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=$(STAGING_DIR)/usr \
+ --oldincludedir=$(STAGING_DIR)/usr/include \
+ --with-sdl-prefix=$(STAGING_DIR)/usr \
+ --with-sdl-exec-prefix=$(STAGING_DIR)/usr \
+ --without-x \
+ --disable-sdltest \
+ );
+ touch $@
+# !!!! ++ modif de config.status pour virer les /usr/include et /usr/lib en dur......!!!!!!!!!!
+
+$(PRBOOM_DIR)/.compiled: $(PRBOOM_DIR)/.configured
+ $(MAKE) -C $(PRBOOM_DIR)
+ touch $@
+
+$(STAGING_DIR)/usr/lib/prdoom.so: $(PRBOOM_DIR)/.compiled
+ $(MAKE) -C $(PRBOOM_DIR) install
+ touch -c $@
+
+$(TARGET_DIR)/usr/lib/prdoom.so: $(STAGING_DIR)/usr/lib/prdoom.so
+#copier tous les .wad dans data (là où est prdoom.wad)
+ cp -dpf $(STAGING_DIR)/usr/lib/libSDL_image*.so* $(TARGET_DIR)/usr/lib/
+ -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libSDL_image.so
+
+PRBOOM sdl_prboom: sdl $(PRBOOM_DIR)/.compiled
+
+sdl_prboom-clean:
+ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(PRBOOM_DIR) uninstall
+ -$(MAKE) -C $(PRBOOM_DIR) clean
+
+sdl_prboom-dirclean:
+ rm -rf $(PRBOOM_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_PRBOOM)),y)
+TARGETS+=sdl_prboom
+endif
Added: trunk/buildroot/package/sdl/sdl_mixer.mk
===================================================================
--- trunk/buildroot/package/sdl/sdl_mixer.mk (rev 0)
+++ trunk/buildroot/package/sdl/sdl_mixer.mk 2007-03-02 17:44:52 UTC (rev 575)
@@ -0,0 +1,66 @@
+#############################################################
+#
+# SDL_mixer: sound addon for SDL
+#
+#############################################################
+SDL_MIXER_VERSION:=1.2.7
+SDL_MIXER_SOURCE:=SDL_mixer-$(SDL_MIXER_VERSION).tar.gz
+SDL_MIXER_SITE:=http://www.libsdl.org/projects/SDL_mixer/release
+SDL_MIXER_CAT:=zcat
+SDL_MIXER_DIR:=$(BUILD_DIR)/SDL_mixer-$(SDL_MIXER_VERSION)
+
+$(DL_DIR)/$(SDL_MIXER_SOURCE):
+ $(WGET) -P $(DL_DIR) $(SDL_MIXER_SITE)/$(SDL_MIXER_SOURCE)
+
+sdl_image-source: $(DL_DIR)/$(SDL_MIXER_SOURCE)
+
+$(SDL_MIXER_DIR)/.unpacked: $(DL_DIR)/$(SDL_MIXER_SOURCE)
+ $(SDL_MIXER_CAT) $(DL_DIR)/$(SDL_MIXER_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ touch $@
+
+$(SDL_MIXER_DIR)/.configured: $(SDL_MIXER_DIR)/.unpacked
+ (cd $(SDL_MIXER_DIR); \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS) " \
+ LDFLAGS="-Wl,-rpath=$(STAGING_DIR)/lib/" \
+ ./configure \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=$(STAGING_DIR)/usr \
+ --with-sdl-prefix=$(STAGING_DIR)/usr \
+ --with-sdl-exec-prefix=$(STAGING_DIR)/usr \
+ --disable-sdltest \
+ --disable-static \
+ );
+ touch $@
+
+$(SDL_MIXER_DIR)/.compiled: $(SDL_MIXER_DIR)/.configured
+ $(MAKE) -C $(SDL_MIXER_DIR)
+ touch $@
+
+$(STAGING_DIR)/usr/lib/libSDL_mixer.so: $(SDL_MIXER_DIR)/.compiled
+ $(MAKE) -C $(SDL_MIXER_DIR) install
+ touch -c $@
+
+$(TARGET_DIR)/usr/lib/libSDL_mixer.so: $(STAGING_DIR)/usr/lib/libSDL_mixer.so
+ cp -dpf $(STAGING_DIR)/usr/lib/libSDL_mixer*.so* $(TARGET_DIR)/usr/lib/
+ -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libSDL_mixer.so
+
+SDL_MIXER sdl_mixer: sdl $(TARGET_DIR)/usr/lib/libSDL_mixer.so
+
+sdl_mixer-clean:
+ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(SDL_MIXER_DIR) uninstall
+ -$(MAKE) -C $(SDL_MIXER_DIR) clean
+
+sdl_mixer-dirclean:
+ rm -rf $(SDL_MIXER_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_SDL_MIXER)),y)
+TARGETS+=sdl_mixer
+endif
Added: trunk/buildroot/package/sdl/sdl_net.mk
===================================================================
--- trunk/buildroot/package/sdl/sdl_net.mk (rev 0)
+++ trunk/buildroot/package/sdl/sdl_net.mk 2007-03-02 17:44:52 UTC (rev 575)
@@ -0,0 +1,66 @@
+#############################################################
+#
+# SDL_net: network addon for SDL
+#
+#############################################################
+SDL_NET_VERSION:=1.2.6
+SDL_NET_SOURCE:=SDL_net-$(SDL_NET_VERSION).tar.gz
+SDL_NET_SITE:=http://www.libsdl.org/projects/SDL_net/release
+SDL_NET_CAT:=zcat
+SDL_NET_DIR:=$(BUILD_DIR)/SDL_net-$(SDL_NET_VERSION)
+
+$(DL_DIR)/$(SDL_NET_SOURCE):
+ $(WGET) -P $(DL_DIR) $(SDL_NET_SITE)/$(SDL_NET_SOURCE)
+
+sdl_net-source: $(DL_DIR)/$(SDL_NET_SOURCE)
+
+$(SDL_NET_DIR)/.unpacked: $(DL_DIR)/$(SDL_NET_SOURCE)
+ $(SDL_NET_CAT) $(DL_DIR)/$(SDL_NET_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ touch $@
+
+$(SDL_NET_DIR)/.configured: $(SDL_NET_DIR)/.unpacked
+ (cd $(SDL_NET_DIR); \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS) " \
+ LDFLAGS="-Wl,-rpath=$(STAGING_DIR)/lib/" \
+ ./configure \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=$(STAGING_DIR)/usr \
+ --with-sdl-prefix=$(STAGING_DIR)/usr \
+ --with-sdl-exec-prefix=$(STAGING_DIR)/usr \
+ --disable-sdltest \
+ --disable-static \
+ );
+ touch $@
+
+$(SDL_NET_DIR)/.compiled: $(SDL_NET_DIR)/.configured
+ $(MAKE) -C $(SDL_NET_DIR)
+ touch $@
+
+$(STAGING_DIR)/usr/lib/libSDL_net.so: $(SDL_NET_DIR)/.compiled
+ $(MAKE) -C $(SDL_NET_DIR) install
+ touch -c $@
+
+$(TARGET_DIR)/usr/lib/libSDL_net.so: $(STAGING_DIR)/usr/lib/libSDL_net.so
+ cp -dpf $(STAGING_DIR)/usr/lib/libSDL_net*.so* $(TARGET_DIR)/usr/lib/
+ -$(STRIP) --strip-unneeded $(TARGET_DIR)/usr/lib/libSDL_net.so
+
+SDL_NET sdl_net: sdl $(TARGET_DIR)/usr/lib/libSDL_net.so
+
+sdl_net-clean:
+ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(SDL_NET_DIR) uninstall
+ -$(MAKE) -C $(SDL_NET_DIR) clean
+
+sdl_net-dirclean:
+ rm -rf $(SDL_NET_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_SDL_NET)),y)
+TARGETS+=sdl_net
+endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2007-02-27 17:12:35
|
Revision: 574
http://armadeus.svn.sourceforge.net/armadeus/?rev=574&view=rev
Author: jorasse
Date: 2007-02-27 09:12:28 -0800 (Tue, 27 Feb 2007)
Log Message:
-----------
[linux RTC-ds1374] fix kfree memory potential issue if module probe fails
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff 2007-02-26 22:07:26 UTC (rev 573)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff 2007-02-27 17:12:28 UTC (rev 574)
@@ -1,6 +1,6 @@
diff -purN -x '*~' ref/linux-2.6.18.1/drivers/rtc/Kconfig linux-2.6.18.1/drivers/rtc/Kconfig
--- ref/linux-2.6.18.1/drivers/rtc/Kconfig 2006-10-14 05:34:03.000000000 +0200
-+++ linux-2.6.18.1/drivers/rtc/Kconfig 2007-02-25 20:22:02.000000000 +0100
++++ linux-2.6.18.1/drivers/rtc/Kconfig 2007-02-26 23:09:28.000000000 +0100
@@ -111,6 +111,16 @@ config RTC_DRV_DS1307
This driver can also be built as a module. If so, the module
will be called rtc-ds1307.
@@ -20,7 +20,7 @@
depends on RTC_CLASS
diff -purN -x '*~' ref/linux-2.6.18.1/drivers/rtc/Makefile linux-2.6.18.1/drivers/rtc/Makefile
--- ref/linux-2.6.18.1/drivers/rtc/Makefile 2006-10-14 05:34:03.000000000 +0200
-+++ linux-2.6.18.1/drivers/rtc/Makefile 2007-02-25 20:22:02.000000000 +0100
++++ linux-2.6.18.1/drivers/rtc/Makefile 2007-02-26 23:09:28.000000000 +0100
@@ -15,6 +15,7 @@ obj-$(CONFIG_RTC_DRV_X1205) += rtc-x1205
obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o
@@ -31,7 +31,7 @@
obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
diff -purN -x '*~' ref/linux-2.6.18.1/drivers/rtc/rtc-ds1374.c linux-2.6.18.1/drivers/rtc/rtc-ds1374.c
--- ref/linux-2.6.18.1/drivers/rtc/rtc-ds1374.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18.1/drivers/rtc/rtc-ds1374.c 2007-02-26 22:46:55.000000000 +0100
++++ linux-2.6.18.1/drivers/rtc/rtc-ds1374.c 2007-02-27 17:52:19.000000000 +0100
@@ -0,0 +1,282 @@
+/*
+ * An rtc/alarm/i2c driver for the Dallas ds1374
@@ -289,7 +289,7 @@
+ if (!IS_ERR(rtc))
+ rtc_device_unregister(rtc);
+
-+ if ((err = i2c_detach_client(client)))
++ if (!i2c_detach_client(client))
+
+exit_kfree:
+ kfree(client);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2007-02-26 22:09:41
|
Revision: 573
http://armadeus.svn.sourceforge.net/armadeus/?rev=573&view=rev
Author: jorasse
Date: 2007-02-26 14:07:26 -0800 (Mon, 26 Feb 2007)
Log Message:
-----------
[linux RTC-ds1374] fix crash when RTC probe fails (for example short circuit with i2c lines)
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff 2007-02-25 11:17:37 UTC (rev 572)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/055-linux-2.6.18-rtc-ds1374.diff 2007-02-26 22:07:26 UTC (rev 573)
@@ -1,6 +1,6 @@
diff -purN -x '*~' ref/linux-2.6.18.1/drivers/rtc/Kconfig linux-2.6.18.1/drivers/rtc/Kconfig
--- ref/linux-2.6.18.1/drivers/rtc/Kconfig 2006-10-14 05:34:03.000000000 +0200
-+++ linux-2.6.18.1/drivers/rtc/Kconfig 2007-01-13 17:39:29.000000000 +0100
++++ linux-2.6.18.1/drivers/rtc/Kconfig 2007-02-25 20:22:02.000000000 +0100
@@ -111,6 +111,16 @@ config RTC_DRV_DS1307
This driver can also be built as a module. If so, the module
will be called rtc-ds1307.
@@ -20,7 +20,7 @@
depends on RTC_CLASS
diff -purN -x '*~' ref/linux-2.6.18.1/drivers/rtc/Makefile linux-2.6.18.1/drivers/rtc/Makefile
--- ref/linux-2.6.18.1/drivers/rtc/Makefile 2006-10-14 05:34:03.000000000 +0200
-+++ linux-2.6.18.1/drivers/rtc/Makefile 2007-01-13 17:40:38.000000000 +0100
++++ linux-2.6.18.1/drivers/rtc/Makefile 2007-02-25 20:22:02.000000000 +0100
@@ -15,6 +15,7 @@ obj-$(CONFIG_RTC_DRV_X1205) += rtc-x1205
obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o
@@ -31,8 +31,8 @@
obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
diff -purN -x '*~' ref/linux-2.6.18.1/drivers/rtc/rtc-ds1374.c linux-2.6.18.1/drivers/rtc/rtc-ds1374.c
--- ref/linux-2.6.18.1/drivers/rtc/rtc-ds1374.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.18.1/drivers/rtc/rtc-ds1374.c 2007-01-13 18:06:06.000000000 +0100
-@@ -0,0 +1,279 @@
++++ linux-2.6.18.1/drivers/rtc/rtc-ds1374.c 2007-02-26 22:46:55.000000000 +0100
+@@ -0,0 +1,282 @@
+/*
+ * An rtc/alarm/i2c driver for the Dallas ds1374
+ * based on rts-ds1672 driver from Alessandro Zummo
@@ -286,8 +286,11 @@
+ return 0;
+
+exit_detach:
-+ i2c_detach_client(client);
++ if (!IS_ERR(rtc))
++ rtc_device_unregister(rtc);
+
++ if ((err = i2c_detach_client(client)))
++
+exit_kfree:
+ kfree(client);
+
@@ -312,4 +315,3 @@
+
+module_init(ds1374_init);
+module_exit(ds1374_exit);
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-02-25 11:17:38
|
Revision: 572
http://armadeus.svn.sourceforge.net/armadeus/?rev=572&view=rev
Author: artemys
Date: 2007-02-25 03:17:37 -0800 (Sun, 25 Feb 2007)
Log Message:
-----------
[DEMOS] First (usable but buggy) version of Wolfenstein3D for Armadeus Project's boards.
Added Paths:
-----------
trunk/target/demos/wolfenstein3d/
trunk/target/demos/wolfenstein3d/BUGS.txt
trunk/target/demos/wolfenstein3d/IDEAS
trunk/target/demos/wolfenstein3d/Makefile
trunk/target/demos/wolfenstein3d/NOTES
trunk/target/demos/wolfenstein3d/README
trunk/target/demos/wolfenstein3d/TODO
trunk/target/demos/wolfenstein3d/audiosod.h
trunk/target/demos/wolfenstein3d/audiowl6.h
trunk/target/demos/wolfenstein3d/docs/
trunk/target/demos/wolfenstein3d/docs/goodstuf.txt
trunk/target/demos/wolfenstein3d/docs/release.txt
trunk/target/demos/wolfenstein3d/fmopl.c
trunk/target/demos/wolfenstein3d/fmopl.h
trunk/target/demos/wolfenstein3d/foreign.h
trunk/target/demos/wolfenstein3d/gfxv_sdm.h
trunk/target/demos/wolfenstein3d/gfxv_sod.h
trunk/target/demos/wolfenstein3d/gfxv_wl1.h
trunk/target/demos/wolfenstein3d/gfxv_wl6.h
trunk/target/demos/wolfenstein3d/id_ca.c
trunk/target/demos/wolfenstein3d/id_ca.h
trunk/target/demos/wolfenstein3d/id_heads.h
trunk/target/demos/wolfenstein3d/id_us.c
trunk/target/demos/wolfenstein3d/id_us.h
trunk/target/demos/wolfenstein3d/id_vh.c
trunk/target/demos/wolfenstein3d/id_vh.h
trunk/target/demos/wolfenstein3d/misc.c
trunk/target/demos/wolfenstein3d/misc.h
trunk/target/demos/wolfenstein3d/objs.c
trunk/target/demos/wolfenstein3d/sd_comm.c
trunk/target/demos/wolfenstein3d/sd_comm.h
trunk/target/demos/wolfenstein3d/sd_null.c
trunk/target/demos/wolfenstein3d/sd_oss.c
trunk/target/demos/wolfenstein3d/version.h
trunk/target/demos/wolfenstein3d/vi_comm.c
trunk/target/demos/wolfenstein3d/vi_comm.h
trunk/target/demos/wolfenstein3d/vi_sdl.c
trunk/target/demos/wolfenstein3d/wl_act1.c
trunk/target/demos/wolfenstein3d/wl_act2.c
trunk/target/demos/wolfenstein3d/wl_act3.c
trunk/target/demos/wolfenstein3d/wl_act3.h
trunk/target/demos/wolfenstein3d/wl_agent.c
trunk/target/demos/wolfenstein3d/wl_debug.c
trunk/target/demos/wolfenstein3d/wl_def.h
trunk/target/demos/wolfenstein3d/wl_draw.c
trunk/target/demos/wolfenstein3d/wl_game.c
trunk/target/demos/wolfenstein3d/wl_inter.c
trunk/target/demos/wolfenstein3d/wl_main.c
trunk/target/demos/wolfenstein3d/wl_menu.c
trunk/target/demos/wolfenstein3d/wl_menu.h
trunk/target/demos/wolfenstein3d/wl_play.c
trunk/target/demos/wolfenstein3d/wl_state.c
trunk/target/demos/wolfenstein3d/wl_text.c
Added: trunk/target/demos/wolfenstein3d/BUGS.txt
===================================================================
--- trunk/target/demos/wolfenstein3d/BUGS.txt (rev 0)
+++ trunk/target/demos/wolfenstein3d/BUGS.txt 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,30 @@
+LIST OF BUGS on Armadeus Project port:
+--------------------------------------
+
+1]-----------
+
+When shooting, player can't stop and when no more ammunition game exits with an error.
+When provocating a SegFault instead of an error, here is the backtrace:
+
+Core was generated by `../sdlwolf3d'.
+Program terminated with signal 11, Segmentation fault.
+#0 0x0000b6c0 in PML_ReadFromFile (buf=0xb6bb8 "", offset=0, length=0)
+ at id_ca.c:767
+767 id_ca.c: No such file or directory.
+ in id_ca.c
+(gdb) bt
+#0 0x0000b6c0 in PML_ReadFromFile (buf=0xb6bb8 "", offset=0, length=0)
+ at id_ca.c:767
+#1 0x0000ba60 in PM_GetPage (pagenum=636) at id_ca.c:832
+#2 0x0002d4c0 in DeCompileSprite (shapenum=530) at wl_draw.c:768
+#3 0x0002d7ec in SimpleScaleShape (xcenter=120, shapenum=530, height=121)
+ at wl_draw.c:825
+#4 0x0002c6b8 in DrawPlayerWeapon () at wl_draw.c:419
+#5 0x0002d030 in ThreeDRefresh () at wl_draw.c:673
+#6 0x00022894 in PlayLoop () at wl_play.c:1218
+#7 0x00018364 in GameLoop () at wl_game.c:1067
+#8 0x0002a1c8 in DemoLoop () at wl_main.c:1253
+#9 0x0002a298 in WolfMain (argc=1, argv=0xbe8efdc4) at wl_main.c:1288
+#10 0x0002ea40 in main (argc=1, argv=0xbe8efdc4) at vi_sdl.c:14
+
+Bug doesn't occur when game is compiled for PC
\ No newline at end of file
Added: trunk/target/demos/wolfenstein3d/IDEAS
===================================================================
--- trunk/target/demos/wolfenstein3d/IDEAS (rev 0)
+++ trunk/target/demos/wolfenstein3d/IDEAS 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,22 @@
+* One binary, any game type.
+* A key to change viewsize while playing
+* Game able to work with any resolution in software mode
+* Audio support using OpenAL
+* Add support for the Mac version, if possible
+* Network support!
+* Fully compile with no warnings/errors using -Wall -ansi -pedantic and with
+ other compilers (would need to turn off warnings about unused parameters)
+* Port to: Linux/SVGAlib, Unix/OpenGL?, Linux/SDL, DOS/Allegro?, Win32/GDI?,
+ Win32/DX?, Win32/D3D?, Win32/OpenGL?, BeOS?, MacOS?, QNX?
+* Ease in using demos. Playing demos from files, recording to files, batch
+ playing, and so on.
+* Make Wolf3D the game it was originally planned to be... More strategy...
+* Empty TODO File
+* Test with other available mods (that were compatible with the original
+ game)
+* Unified input handling
+* Configuration files and save games which work regardless of operating
+ system/processor/binary build
+* Suite of utilities to edit the game data.
+* Resolve any endian issues
+* Add a ViewMap?
Added: trunk/target/demos/wolfenstein3d/Makefile
===================================================================
--- trunk/target/demos/wolfenstein3d/Makefile (rev 0)
+++ trunk/target/demos/wolfenstein3d/Makefile 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,69 @@
+ifeq ($(TARGET),arm)
+INCLUDE_PATH="../../../buildroot/build_arm_nofpu/SDL-1.2.11/include/"
+LIBRARY_PATH="../../../buildroot/build_arm_nofpu/root/usr/lib/"
+INSTALL_DIR="../../../buildroot/build_arm_nofpu/root/usr/bin/"
+CC:=../../../buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-gcc
+DEFINES=TARGET
+ROOT=../../../buildroot/build_arm_nofpu/staging_dir/
+else
+INCLUDE_PATH="/usr/include/SDL"
+LIBRARY_PATH="/usr/lib/"
+INSTALL_DIR="."
+CC=gcc
+DEFINES=HOST
+endif
+
+CFLAGS = -O2 -Wall
+#CFLAGS = -g -Wall -pedantic
+#CFLAGS = -g -O2 -Wall -pedantic
+#CFLAGS = -Wall -O6 -fomit-frame-pointer -ffast-math -funroll-loops -mpentiumpro -mcpu=pentiumpro -march=pentiumpro
+#CFLAGS = -g -Wall -pedantic -std=gnu99
+#CFLAGS = -Os -Wall -pedantic
+#CFLAGS = -Os -Wall -fomit-frame-pointer -ffast-math -mpentiumpro -mcpu=pentiumpro -march=pentiumpro
+
+OBJS = objs.o misc.o id_ca.o id_vh.o id_us.o \
+ wl_act1.o wl_act2.o wl_act3.o wl_agent.o wl_game.o \
+ wl_inter.o wl_menu.o wl_play.o wl_state.o wl_text.o wl_main.o \
+ wl_debug.o vi_comm.o sd_comm.o
+ROBJS = wl_draw.o
+DOBJS = $(OBJS) $(ROBJS) vi_sdl.o
+
+LFLAGS = -lm
+
+OBJS += sd_null.o
+#OBJS += sd_oss.o fmopl.o
+#CFLAGS += -D_REENTRANT
+#LFLAGS += -lpthread
+
+CFLAGS += `$(ROOT)/usr/bin/sdl-config --cflags`
+
+DLFLAGS = $(LFLAGS) `$(ROOT)/usr/bin/sdl-config --libs`
+
+NASM = nasm
+
+.SUFFIXES: .asm
+
+all: sdlwolf3d
+
+$(DOBJS): version.h id_heads.h wl_def.h
+
+.asm.o:
+ $(NASM) -f elf -o $@ $<
+
+swolf3d: $(SOBJS)
+ $(CC) -o swolf3d $(SOBJS) $(SLFLAGS)
+
+xwolf3d: $(XOBJS)
+ $(CC) -o xwolf3d $(XOBJS) $(XLFLAGS)
+
+sdlwolf3d: $(DOBJS)
+ $(CC) -o sdlwolf3d $(DOBJS) $(DLFLAGS)
+
+clean:
+ rm -rf swolf3d xwolf3d sdlwolf3d *.o
+
+distclean: clean
+ rm -rf *~ DEADJOE
+
+forced: distclean all
+ rm -rf *.o
Added: trunk/target/demos/wolfenstein3d/NOTES
===================================================================
--- trunk/target/demos/wolfenstein3d/NOTES (rev 0)
+++ trunk/target/demos/wolfenstein3d/NOTES 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,71 @@
+Just some random facts/thoughts/ideas/musings:
+
+* Wolfenstein 3D for:
+ - PC [May 5, 1992]
+ - PC (Spear of Destiny) [September 18, 1992]
+ - SNES
+ - Macintosh
+ - Jaguar
+ - Apple IIGS: http://www.sheppyware.com/products/a2/wolf3d/
+ - 3DO
+ - Acorn/Archemedes: http://www.users.globalnet.co.uk/~brlowe/info2.htm
+
+* Rumored/Never Released?
+ - Atari Lynx
+ - Sega Genesis (was cancelled after a month)
+ - Japanese PC Version (referenced in source)
+ - Spanish PC Version (referenced in source)
+ - Japanese Mac Version (referenced in source ??)
+
+* Unofficial ports:
+ - Linux (this, xwolf, wolfgl)
+ XWolf: http://www.sirius.demon.co.uk/xwolf/
+ - Amiga (port of my first pc wolf3d linux port)
+ http://www.silab.dsi.unimi.it/~cs556770/wolf3d/
+ - Windows
+ WolfGL: http://www.sourceforge.net/projects/wolfgl/
+ Wolf DX: http://www.phoebe.co.uk/glwolf/
+ NewWolf: http://wolfgl.narod.ru/
+
+* PC source released Jul 21, 1995 [http://www.3dgamers.com/games/wolfenstein3d/]
+ - ftp://ftp.idsoftware.com/idstuff/source/wolfsrc.zip
+ * now many ports, projects, etc
+ - http://www.abraxis.com/brucel/wolf3d.html
+ - http://www.wolf3dbunker.com
+ - http://www.wolf3dmansion.com/index.phtml
+* Macintosh source released January 21, 2000
+ - http://www.maccentral.com/news/0001/24.wolf3d.shtml
+* TED5 source (map editor used for tons of games including wolf3d)
+ - ftp://ftp.3drealms.com/misc/ted5.zip
+* Games which used the Wolfenstein 3D Engine:
+ - Blake Stone (Aliens of Gold, Planet Strike)
+ - Corridor 7
+ - Operation Body Count
+
+Apogee FAQ (lots of information regarding Wolf3D):
+- http://www.rinkworks.com/apogee/
+
+Wolfenstein 3D FAQ:
+- http://www.wolf3d.co.uk/Wolfenstein-3D.faq
+
+How to get Wolfenstein 3D:
+- Wolfenstein 3D Shareware:
+ ftp://ftp.gamers.org/pub/games/wolf3d/official/1wolf14.zip
+ http://www.3drealms.com/downloads.html
+- Spear of Destiny Demo:
+ ftp://ftp.gamers.org/pub/3daction/00archives/speardestiny/releases/soddemo2.zip
+- Macintosh versions:
+ - Search for the shareware version (First Encounter) on Macintosh Shareware
+ websites.
+ - The commercial Macintosh version (Second Encounter, not Third) is out of
+ print, but you may find someone selling it on websites such as
+ http://www.ebay.com.
+- Where to Buy:
+ http://www.3drealms.com
+ http://www.idsoftware.com (look for how to order direct, etc)
+ http://www.activison.com
+
+
+-----
+Steven Fuller
+re...@ic...
Added: trunk/target/demos/wolfenstein3d/README
===================================================================
--- trunk/target/demos/wolfenstein3d/README (rev 0)
+++ trunk/target/demos/wolfenstein3d/README 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,74 @@
+This is a "quick and dirty" port of "Wolfenstein 3D Linux" to the Armadeus Project
+boards. You will need a keyboard connected to your board to appreciate this game ! ;-)
+
+Original sources were found here: http://www.icculus.org/wolf3d/
+
+To compile it:
+- for your Host: make
+- for your board; make TARGET=arm
+
+To use it you will need to have original game data (wolfdata.zip):
+http://sourceforge.net/project/showfiles.php?group_id=11904
+Launch the game executable (sdlwolf3d) from the data directory.
+
+There is still some bugs, please consult BUGS.txt.
+
+Julien Boibessot
+jul...@ar...
+
+
+Original text start here: --------------------------->>>>
+
+This is a October 28, 2001 Snapshot of "Wolfenstein 3D Linux" by Steven
+Fuller. It is an unofficial Linux port of the id Software game, Wolfenstein
+3D (1992).
+
+I am releasing this snapshot to find out what still needs to be done to make
+this port 'complete.' So all feedback is welcome.
+
+My Goal:
+Take the 1992 DOS game, and bring it to Linux. Extra features will be kept
+at a minimum.
+
+To compile, type: make
+Be sure to have SDL 1.2 (http://www.libsdl.org) installed.
+
+To change which version of the game is used, edit version.h (change the
+#define WMODE <number> line, replacing <number> with: 0 for the Wolfenstein
+3D Shareware (WL1), Wolfenstein 3D registered, all six episodes (WL6), the
+Spear of Destiny Demo (SDM), and Spear of Destiny (SOD). Make sure you have
+the latest versions of the game). Wolfenstein 3D, the first three episodes
+(WL3) is not supported; let me know if you have a copy (or you could pick up
+a copy of the full version...). To find out where to get the
+demos/shareware, look in NOTES.
+
+Sound support is there. Edit the Makefile (find the line that has 'OBJS +=
+sd_null.o'. Add a # in front of it, and remove the # from the next three
+lines. Recompile and sound should work.)
+
+If you have anything to contribute to NOTES (interesting facts, etc),
+please let me know.
+
+Note:
+Config files are not implemented. They should be implemented in the next
+release.
+
+If you like your Wolf3D with OpenGL, be sure to check out WolfGL:
+http://www.sourceforge.net/projects/wolfgl/
+
+
+Thanks:
+* id Software
+* David Haslam
+* Ryan Gordon
+* Bill Heineman
+* Dan Olson
+* Leonardo Zide
+* Tatsuyuki Satoh
+* Chuck Mason
+* And everyone who has emailed me about this code! Thanks!
+
+-----
+Steven Fuller
+re...@ic...
+http://icculus.org/wolf3d/
Added: trunk/target/demos/wolfenstein3d/TODO
===================================================================
--- trunk/target/demos/wolfenstein3d/TODO (rev 0)
+++ trunk/target/demos/wolfenstein3d/TODO 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,137 @@
+Priority Levels: I > R > M (I, R required to be complete before full release)
+Program: P=PC Wolf3D, M=Mac Wolf3D, B=Both
+P R - create a better "read direction" for menu movement
+P M - convert while (Keyboard[sc_Blah]) IN_CheckAck() to IN_WaitKeyDown(sc..
+P I - finish changing the game movement to the new style
+P R - update input menus/config
+P M - cleanup/rewrite menu code
+P R - update sound menus/config
+P I - rewrite sound code: get rid of packed structs, clean up thread stuff
+P I - fix issues (speed, hacks) with variable screen size
+P M - BSP trees (or something similar), then OpenGL support
+M R - port menu code (after fixed up)
+M R - add sound
+M M - complete/fix opengl mode
+M M - add music (would need to RE the sound lib)
+B I - complete savegame, config formats
+M I - add SDL
+B R - decide if to keep SVGA/X11 targets
+B M - configure scripts? (autoconf/automake/etc)
+B M - port to dreamcast?
+B M - add compression to savegames/config
+B I - play through game (w/ sound and music) to make sure things work
+B M - use stdint.h where appropiate
+B M - finish serializing reads/writes, endian issues.
+ - PC version should be OK for loading -- savegames not yet tested.
+P M - fix raycast bug where at certain points you can see through corners
+B I - merge other TODO lists into this list
+B M - use something like config file or getenv to point at data directories
+P I - finish handling/mapping for all keys in sys. specific code
+B I - add mouse support
+B M - add joystick/gamepad support
+P I - fill in the new fizzlefade function
+P I - add sound "emulation" to the necessary targets so WaitSoundDone works
+P R - change boolean SD_PlaySound to void SD_PlaySound
+P M - position pushwall sounds
+P M - id_ca.c cache code: fix/readd/rewrite the "garbage collection" system
+P M - rewrite id_ca.c: uniform memory handling system
+P M - either move id_heads into wl_def or split header files apart
+P R - rewrite fmopl.c to avoid licensing issues (or provide as a separate patch? may not be advisable since id owns copyright on wolf code)
+P R - remove CA_LoadAllSounds now that the sound code does everything
+B I - README, etc.
+B M - Code Documentation
+P M - rename visable to visible
+B M - change the commandline handling (use something like getopt?)
+P R - rewrite RLEWexpand to not use words
+B M - openal support
+B I - when window loses focus, it should clear the keys
+B M - [X11] use the data in the visual/image for formatting colors
+
+Complete:
+P I - fix or remove fizzle fade
+ - Removed [nice, but very hacky effect]
+------------------------------------------------------------------------------
+* what exactly is the point of all the DigiMode checks in wl_act2.c?
+* add ylookup?
+* remove farmapylookup?
+* would be nice if Quit() used vsnprintf, etc
+* actor walking through door is drawn in front of door: near end of E1M1 for
+example (is this reproducible?)
+* use static and const where appropriate
+* clean up header files, especially wl_def.h, where some declarations aren't
+in the right place
+* remove check for debugmode?
+* check filehandling (ex, file missing, bad file type, and such)
+PlayDemoFromFile specifically
+* deathcam went by too fast, same with the spear of destiny ending animation
+ - probably due to waiting for sounds to finish
+* split wl_draw into two files (draw independent, draw dependent)
+------------------------------------------------------------------------------
+void ControlMovement(objtype *ob) (wl_agent.c)
+void UpdateInput() / void PollControls() (wl_play.c)
+------------------------------------------------------------------------------
+Control Menu:
+* TODO
+
+Sound Menu:
+* Digital Sound Effects:
+- On [PCM]
+- Off
+* Sound Effects
+- On [AdLib/OPL2]
+- PC Speaker?
+- Off
+* Music:
+- On [AdLib/OPL2]
+- Off
+------------------------------------------------------------------------------
+Where to Look for/Save Files:
+
+~/.wolf3d
+cwd
+/usr/games/share
+$ENVIRONMENT_VARIABLE
+
+Need to establish where to look, order to look, strict/lenient loading (load
+all files from the determined game directory, or look in order for each
+file), and where to put savegames and config files.
+------------------------------------------------------------------------------
+Save game header:
+8 bytes: WOLF3D, 0, 0
+4 bytes: SAV, 0
+4 bytes: version (integer)
+4 bytes: game type (WL1, WL6, SDM, SOD)
+4 bytes: seconds past 1970 (time(NULL))
+4 bytes: padding
+4 bytes: checksum for the data (after text string)
+32 bytes: text string
+
+Version 0xFFFFFFFF Data: (Unofficial Save Game data)
+<see wl_main.c>
+
+Version 0x00000000 Data: (Official)
+<undetermined>
+
+Version 0x00000001 Data: (Official)
+<undetermined but will be compressed>
+
+---
+
+Config header:
+8 bytes: WOLF3D, 0, 0
+4 bytes: CFG, 0
+4 bytes: version (integer)
+4 bytes: game type (WL1, WL6, SDM, SOD)
+4 bytes: seconds past 1970 (time(NULL))
+4 bytes: padding
+4 bytes: checksum for the data
+
+Version 0xFFFFFFFF Data: (Unofficial Config data)
+<see wl_main.c>
+
+Version 0x00000000 Data: (Official)
+<undetermined>
+
+Version 0x00000001 Data: (Official)
+<undetermined but will be compressed>
+
Added: trunk/target/demos/wolfenstein3d/audiosod.h
===================================================================
--- trunk/target/demos/wolfenstein3d/audiosod.h (rev 0)
+++ trunk/target/demos/wolfenstein3d/audiosod.h 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,122 @@
+#define NUMSOUNDS 81
+#define NUMSNDCHUNKS 267
+
+/* Sound names & indexes */
+typedef enum {
+ HITWALLSND, // 0
+ MISSILEHITSND, // 1
+ SELECTITEMSND, // 2
+ GHOSTSIGHTSND, // 3
+ MOVEGUN2SND, // 4
+ MOVEGUN1SND, // 5
+ NOWAYSND, // 6
+ NAZIHITPLAYERSND, // 7
+ MISSILEFIRESND, // 8
+ PLAYERDEATHSND, // 9
+ DOGDEATHSND, // 10
+ ATKGATLINGSND, // 11
+ GETKEYSND, // 12
+ NOITEMSND, // 13
+ WALK1SND, // 14
+ WALK2SND, // 15
+ TAKEDAMAGESND, // 16
+ GAMEOVERSND, // 17
+ OPENDOORSND, // 18
+ CLOSEDOORSND, // 19
+ DONOTHINGSND, // 20
+ HALTSND, // 21
+ DEATHSCREAM2SND, // 22
+ ATKKNIFESND, // 23
+ ATKPISTOLSND, // 24
+ DEATHSCREAM3SND, // 25
+ ATKMACHINEGUNSND, // 26
+ HITENEMYSND, // 27
+ SHOOTDOORSND, // 28
+ DEATHSCREAM1SND, // 29
+ GETMACHINESND, // 30
+ GETAMMOSND, // 31
+ SHOOTSND, // 32
+ HEALTH1SND, // 33
+ HEALTH2SND, // 34
+ BONUS1SND, // 35
+ BONUS2SND, // 36
+ BONUS3SND, // 37
+ GETGATLINGSND, // 38
+ ESCPRESSEDSND, // 39
+ LEVELDONESND, // 40
+ DOGBARKSND, // 41
+ ENDBONUS1SND, // 42
+ ENDBONUS2SND, // 43
+ BONUS1UPSND, // 44
+ BONUS4SND, // 45
+ PUSHWALLSND, // 46
+ NOBONUSSND, // 47
+ PERCENT100SND, // 48
+ BOSSACTIVESND, // 49
+ DEATHSCREAM4SND, // 50
+ SCHUTZADSND, // 51
+ AHHHGSND, // 52
+ DEATHSCREAM5SND, // 53
+ DEATHSCREAM7SND, // 54
+ DEATHSCREAM8SND, // 55
+ LEBENSND, // 56
+ DEATHSCREAM6SND, // 57
+ NAZIFIRESND, // 58
+ BOSSFIRESND, // 59
+ SSFIRESND, // 60
+ SLURPIESND, // 61
+ GHOSTFADESND, // 62
+ DEATHSCREAM9SND, // 63
+ GETAMMOBOXSND, // 64
+ ANGELSIGHTSND, // 65
+ SPIONSND, // 66
+ NEINSOVASSND, // 67
+ DOGATTACKSND, // 68
+ ANGELFIRESND, // 69
+ TRANSSIGHTSND, // 70
+ TRANSDEATHSND, // 71
+ WILHELMSIGHTSND, // 72
+ WILHELMDEATHSND, // 73
+ UBERDEATHSND, // 74
+ KNIGHTSIGHTSND, // 75
+ KNIGHTDEATHSND, // 76
+ ANGELDEATHSND, // 77
+ KNIGHTMISSILESND, // 78
+ GETSPEARSND, // 79
+ ANGELTIREDSND, // 80
+ LASTSOUND
+ } soundnames;
+
+/* Base offsets */
+#define STARTPCSOUNDS 0
+#define STARTADLIBSOUNDS 81
+#define STARTMUSIC 243
+
+/* Music names & indexes */
+typedef enum {
+ XFUNKIE_MUS, // 0
+ DUNGEON_MUS, // 1
+ XDEATH_MUS, // 2
+ GETTHEM_MUS, // 3
+ XTIPTOE_MUS, // 4
+ GOINGAFT_MUS, // 5
+ URAHERO_MUS, // 6
+ XTHEEND_MUS, // 7
+ NAZI_OMI_MUS, // 8
+ POW_MUS, // 9
+ TWELFTH_MUS, // 10
+ SEARCHN_MUS, // 11
+ SUSPENSE_MUS, // 12
+ ZEROHOUR_MUS, // 13
+ WONDERIN_MUS, // 14
+ ULTIMATE_MUS, // 15
+ ENDLEVEL_MUS, // 16
+ XEVIL_MUS, // 17
+ XJAZNAZI_MUS, // 18
+ COPYPRO_MUS, // 19
+ XAWARD_MUS, // 20
+ XPUTIT_MUS, // 21
+ XGETYOU_MUS, // 22
+ XTOWER2_MUS, // 23
+ LASTMUSIC
+ } musicnames;
Added: trunk/target/demos/wolfenstein3d/audiowl6.h
===================================================================
--- trunk/target/demos/wolfenstein3d/audiowl6.h (rev 0)
+++ trunk/target/demos/wolfenstein3d/audiowl6.h 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,137 @@
+#define NUMSOUNDS 87
+#define NUMSNDCHUNKS 288
+
+//
+// Sound names & indexes
+//
+typedef enum {
+ HITWALLSND, // 0
+ SELECTWPNSND, // 1
+ SELECTITEMSND, // 2
+ HEARTBEATSND, // 3
+ MOVEGUN2SND, // 4
+ MOVEGUN1SND, // 5
+ NOWAYSND, // 6
+ NAZIHITPLAYERSND, // 7
+ SCHABBSTHROWSND, // 8
+ PLAYERDEATHSND, // 9
+ DOGDEATHSND, // 10
+ ATKGATLINGSND, // 11
+ GETKEYSND, // 12
+ NOITEMSND, // 13
+ WALK1SND, // 14
+ WALK2SND, // 15
+ TAKEDAMAGESND, // 16
+ GAMEOVERSND, // 17
+ OPENDOORSND, // 18
+ CLOSEDOORSND, // 19
+ DONOTHINGSND, // 20
+ HALTSND, // 21
+ DEATHSCREAM2SND, // 22
+ ATKKNIFESND, // 23
+ ATKPISTOLSND, // 24
+ DEATHSCREAM3SND, // 25
+ ATKMACHINEGUNSND, // 26
+ HITENEMYSND, // 27
+ SHOOTDOORSND, // 28
+ DEATHSCREAM1SND, // 29
+ GETMACHINESND, // 30
+ GETAMMOSND, // 31
+ SHOOTSND, // 32
+ HEALTH1SND, // 33
+ HEALTH2SND, // 34
+ BONUS1SND, // 35
+ BONUS2SND, // 36
+ BONUS3SND, // 37
+ GETGATLINGSND, // 38
+ ESCPRESSEDSND, // 39
+ LEVELDONESND, // 40
+ DOGBARKSND, // 41
+ ENDBONUS1SND, // 42
+ ENDBONUS2SND, // 43
+ BONUS1UPSND, // 44
+ BONUS4SND, // 45
+ PUSHWALLSND, // 46
+ NOBONUSSND, // 47
+ PERCENT100SND, // 48
+ BOSSACTIVESND, // 49
+ MUTTISND, // 50
+ SCHUTZADSND, // 51
+ AHHHGSND, // 52
+ DIESND, // 53
+ EVASND, // 54
+ GUTENTAGSND, // 55
+ LEBENSND, // 56
+ SCHEISTSND, // 57
+ NAZIFIRESND, // 58
+ BOSSFIRESND, // 59
+ SSFIRESND, // 60
+ SLURPIESND, // 61
+ TOT_HUNDSND, // 62
+ MEINGOTTSND, // 63
+ SCHABBSHASND, // 64
+ HITLERHASND, // 65
+ SPIONSND, // 66
+ NEINSOVASSND, // 67
+ DOGATTACKSND, // 68
+ FLAMETHROWERSND, // 69
+ MECHSTEPSND, // 70
+ GOOBSSND, // 71
+ YEAHSND, // 72
+ DEATHSCREAM4SND, // 73
+ DEATHSCREAM5SND, // 74
+ DEATHSCREAM6SND, // 75
+ DEATHSCREAM7SND, // 76
+ DEATHSCREAM8SND, // 77
+ DEATHSCREAM9SND, // 78
+ DONNERSND, // 79
+ EINESND, // 80
+ ERLAUBENSND, // 81
+ KEINSND, // 82
+ MEINSND, // 83
+ ROSESND, // 84
+ MISSILEFIRESND, // 85
+ MISSILEHITSND, // 86
+ LASTSOUND
+ } soundnames;
+
+//
+// Base offsets
+//
+#define STARTPCSOUNDS 0
+#define STARTADLIBSOUNDS 87
+#define STARTMUSIC 261
+
+//
+// Music names & indexes
+//
+typedef enum {
+ CORNER_MUS, // 0
+ DUNGEON_MUS, // 1
+ WARMARCH_MUS, // 2
+ GETTHEM_MUS, // 3
+ HEADACHE_MUS, // 4
+ HITLWLTZ_MUS, // 5
+ INTROCW3_MUS, // 6
+ NAZI_NOR_MUS, // 7
+ NAZI_OMI_MUS, // 8
+ POW_MUS, // 9
+ SALUTE_MUS, // 10
+ SEARCHN_MUS, // 11
+ SUSPENSE_MUS, // 12
+ VICTORS_MUS, // 13
+ WONDERIN_MUS, // 14
+ FUNKYOU_MUS, // 15
+ ENDLEVEL_MUS, // 16
+ GOINGAFT_MUS, // 17
+ PREGNANT_MUS, // 18
+ ULTIMATE_MUS, // 19
+ NAZI_RAP_MUS, // 20
+ ZEROHOUR_MUS, // 21
+ TWELFTH_MUS, // 22
+ ROSTER_MUS, // 23
+ URAHERO_MUS, // 24
+ VICMARCH_MUS, // 25
+ PACMAN_MUS, // 26
+ LASTMUSIC
+ } musicnames;
Added: trunk/target/demos/wolfenstein3d/docs/goodstuf.txt
===================================================================
--- trunk/target/demos/wolfenstein3d/docs/goodstuf.txt (rev 0)
+++ trunk/target/demos/wolfenstein3d/docs/goodstuf.txt 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,56 @@
+To: ROMERO,TOM
+From: LOTHAR/JAY
+Date: 9 Aug 92 21:06:46
+Subject: AOL Message
+X-mailer: Pegasus Mail v2.3 (R2).
+
+Subj: DREAMS, FLASHBACKS
+Date: 92-08-09 03:59:55 EDT
+From: Tug Hill 2
+Posted on: America Online
+
+On a serious note...
+
+As a former POW (Vietnam), I hesitated to play WOLF for over a
+month after downloading as I feared flashbacks. I didn't want to
+remember all that I had been through all those years ago, when, as
+POW's, my friend and I decided an escape attempt would be better than
+a slow death by torture and starvation.
+
+My friend and I made crude maps and hoarded food. The day of the
+escape we clubbed the guard with stones, took his gun and fought our
+way through two levels of underground tunnels (only a few guards and
+had to crawl). I made it, my friend didn't.
+
+Dreams...NO! NIGHTMARES...YES!! However, the more I play
+WOLF the less frequently I have nightmares. The chilling part is
+turning a corner and seeing a guard with his gun drawn.
+
+WOLF is a powerful game. Fearful as well. I believe that a
+person should face the past. So... when I can play EPISODE 1
+comfortably (no nightmares), I plan on ordering the full series.
+
+Don't let a few bad dreams make you discard this game.
+
+-------------------------------------------------------------------------
+
+Subj: Wolf-3D Section: Action/Arcade Games
+From: Ty Graham 72350,2636 # 191387, * No Replies *
+To: Id Software 72600,1333 Date: 24-Jul-92 18:27:27
+
+Jay, just thought I'd drop a note to let you know how popular Wolf3D is
+here at Microsoft. It seems like I can't walk down a hall without hearing
+'Mein Leben' from someone's office. I hope you guys are getting revenue
+from all this.
+
+Anyway, we were sitting around talking the other day, discussing games for
+Windows, and someone said 'What are those cool guys at Id doing?'. So how
+about it. Are you guys looking at Win games at all? Win32?
+
+In a perfect world, I'd have you guys port the Wolf engine to a multiuser
+maze game for Windows for Workgroups. We need a good M'user Win game.
+
+Anyway some thoughts.
+
+Ty Graham (Microsoft)
+
Added: trunk/target/demos/wolfenstein3d/docs/release.txt
===================================================================
--- trunk/target/demos/wolfenstein3d/docs/release.txt (rev 0)
+++ trunk/target/demos/wolfenstein3d/docs/release.txt 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,53 @@
+We are releasing this code for the entertainment of the
+user community. We don't guarentee that anything even
+builds in here. Projects just seem to rot when you leave
+them alone for long periods of time.
+
+This is all the source we have relating to the original
+PC wolfenstein 3D project. We haven't looked at this
+stuff in years, and I would probably be horribly embarassed
+to dig through my old code, so please don't ask any questions
+about it. The original project was built in borland c++ 3.0.
+I think some minor changes were required for later versions.
+
+You will need the data from a released version of wolf or spear
+to use the exe built from this code. You can just use a
+shareware version if you are really cheap.
+
+
+Some coding comments in retrospect:
+
+The ray casting refresh architecture is still reasonably
+appropriate for the game. A BSP based texture mapper could
+go faster, but ray casting was a lot simpler to do at the time.
+
+The dynamically compiled scaling routines are now a Bad Thing.
+On uncached machines (the original target) they are the fastest
+possible way to scale walls, but on modern processors you just
+wind up thrashing the code cash and wrecking performance.
+A simple looping texture mapper would be faster on 486+ machines.
+
+The whole page manager caching scheme is unecessarily complex.
+
+Way too many #ifdefs in the code!
+
+
+Some project ideas with this code:
+
+Add new monsters or weapons.
+
+Add taller walls and vertical motion. This should only be
+done if the texture mapper is rewritten.
+
+Convert to a 32 bit compiler. This would be a fair amount
+of work, but I would hate to even mess with crusty old 16
+bit code. The code would get a LOT smaller.
+
+Make a multi-player game that runs on DOOM sersetup / ipxsetup drivers.
+
+
+Have fun...
+
+John Carmack
+Technical Director
+Id Software
Added: trunk/target/demos/wolfenstein3d/fmopl.c
===================================================================
--- trunk/target/demos/wolfenstein3d/fmopl.c (rev 0)
+++ trunk/target/demos/wolfenstein3d/fmopl.c 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,1026 @@
+/*
+**
+** File: fmopl.c -- software implementation of FM sound generator
+**
+** Copyright (C) 1999,2000 Tatsuyuki Satoh , MultiArcadeMachineEmulator development
+**
+** Version 0.37
+**
+** Modified for Wolfenstein 3D by Steven Fuller
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <math.h>
+
+#include "fmopl.h"
+
+#define INLINE static /* inline */
+
+void logerror(const char *text, ...);
+
+#ifndef PI
+#define PI 3.14159265358979323846
+#endif
+
+/* -------------------- for debug --------------------- */
+/* #define OPL_OUTPUT_LOG */
+#ifdef OPL_OUTPUT_LOG
+static FILE *opl_dbg_fp = NULL;
+static FM_OPL *opl_dbg_opl[16];
+static int opl_dbg_maxchip,opl_dbg_chip;
+#endif
+
+/* -------------------- preliminary define section --------------------- */
+/* attack/decay rate */
+#define OPL_ARRATE 141280 /* RATE 4 = 2826.24ms @ 3.6MHz */
+#define OPL_DRRATE 1956000 /* RATE 4 = 39280.64ms @ 3.6MHz */
+
+#define FREQ_BITS 24 /* frequency turn */
+
+/* counter bits = 20, octave 7 */
+#define FREQ_RATE (1<<(FREQ_BITS-20))
+#define TL_BITS (FREQ_BITS+2)
+
+/* final output shift, limit minimum and maximum */
+#define OPL_OUTSB (TL_BITS+3-16) /* OPL output final shift 16bit */
+#define OPL_MAXOUT (0x7fff<<OPL_OUTSB)
+#define OPL_MINOUT (-0x8000<<OPL_OUTSB)
+
+/* -------------------- quality selection --------------------- */
+
+/* sinwave entries */
+/* used static memory = SIN_ENT * 4 (byte) */
+#define SIN_ENT 2048
+
+/* output level entries (envelope,sinwave) */
+/* envelope counter lower bits */
+#define ENV_BITS 16
+/* envelope output entries */
+#define EG_ENT 4096
+/* used dynamic memory = EG_ENT*4*4(byte)or EG_ENT*6*4(byte) */
+/* used static memory = EG_ENT*4 (byte) */
+
+#define EG_OFF ((2*EG_ENT)<<ENV_BITS) /* OFF */
+#define EG_DED EG_OFF
+#define EG_DST (EG_ENT<<ENV_BITS) /* DECAY START */
+#define EG_AED EG_DST
+#define EG_AST 0 /* ATTACK START */
+
+#define EG_STEP (96.0/EG_ENT) /* OPL is 0.1875 dB step */
+
+/* LFO table entries */
+#define VIB_ENT 512
+#define VIB_SHIFT (32-9)
+#define AMS_ENT 512
+#define AMS_SHIFT (32-9)
+
+#define VIB_RATE 256
+
+/* -------------------- local defines , macros --------------------- */
+
+/* register number to channel number , slot offset */
+#define SLOT1 0
+#define SLOT2 1
+
+/* envelope phase */
+#define ENV_MOD_RR 0x00
+#define ENV_MOD_DR 0x01
+#define ENV_MOD_AR 0x02
+
+/* -------------------- tables --------------------- */
+static const int slot_array[32]=
+{
+ 0, 2, 4, 1, 3, 5,-1,-1,
+ 6, 8,10, 7, 9,11,-1,-1,
+ 12,14,16,13,15,17,-1,-1,
+ -1,-1,-1,-1,-1,-1,-1,-1
+};
+
+/* key scale level */
+/* table is 3dB/OCT , DV converts this in TL step at 6dB/OCT */
+#define DV (EG_STEP/2)
+static const UINT32 KSL_TABLE[8*16]=
+{
+ /* OCT 0 */
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ /* OCT 1 */
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ 0.000/DV, 0.750/DV, 1.125/DV, 1.500/DV,
+ 1.875/DV, 2.250/DV, 2.625/DV, 3.000/DV,
+ /* OCT 2 */
+ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV,
+ 0.000/DV, 1.125/DV, 1.875/DV, 2.625/DV,
+ 3.000/DV, 3.750/DV, 4.125/DV, 4.500/DV,
+ 4.875/DV, 5.250/DV, 5.625/DV, 6.000/DV,
+ /* OCT 3 */
+ 0.000/DV, 0.000/DV, 0.000/DV, 1.875/DV,
+ 3.000/DV, 4.125/DV, 4.875/DV, 5.625/DV,
+ 6.000/DV, 6.750/DV, 7.125/DV, 7.500/DV,
+ 7.875/DV, 8.250/DV, 8.625/DV, 9.000/DV,
+ /* OCT 4 */
+ 0.000/DV, 0.000/DV, 3.000/DV, 4.875/DV,
+ 6.000/DV, 7.125/DV, 7.875/DV, 8.625/DV,
+ 9.000/DV, 9.750/DV,10.125/DV,10.500/DV,
+ 10.875/DV,11.250/DV,11.625/DV,12.000/DV,
+ /* OCT 5 */
+ 0.000/DV, 3.000/DV, 6.000/DV, 7.875/DV,
+ 9.000/DV,10.125/DV,10.875/DV,11.625/DV,
+ 12.000/DV,12.750/DV,13.125/DV,13.500/DV,
+ 13.875/DV,14.250/DV,14.625/DV,15.000/DV,
+ /* OCT 6 */
+ 0.000/DV, 6.000/DV, 9.000/DV,10.875/DV,
+ 12.000/DV,13.125/DV,13.875/DV,14.625/DV,
+ 15.000/DV,15.750/DV,16.125/DV,16.500/DV,
+ 16.875/DV,17.250/DV,17.625/DV,18.000/DV,
+ /* OCT 7 */
+ 0.000/DV, 9.000/DV,12.000/DV,13.875/DV,
+ 15.000/DV,16.125/DV,16.875/DV,17.625/DV,
+ 18.000/DV,18.750/DV,19.125/DV,19.500/DV,
+ 19.875/DV,20.250/DV,20.625/DV,21.000/DV
+};
+#undef DV
+
+/* sustain level table (3db per step) */
+/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/
+#define SC(db) (db*((3/EG_STEP)*(1<<ENV_BITS)))+EG_DST
+static const INT32 SL_TABLE[16]={
+ SC( 0),SC( 1),SC( 2),SC(3 ),SC(4 ),SC(5 ),SC(6 ),SC( 7),
+ SC( 8),SC( 9),SC(10),SC(11),SC(12),SC(13),SC(14),SC(31)
+};
+#undef SC
+
+#define TL_MAX (EG_ENT*2) /* limit(tl + ksr + envelope) + sinwave */
+/* TotalLevel : 48 24 12 6 3 1.5 0.75 (dB) */
+/* TL_TABLE[ 0 to TL_MAX ] : plus section */
+/* TL_TABLE[ TL_MAX to TL_MAX+TL_MAX-1 ] : minus section */
+static INT32 *TL_TABLE;
+
+/* pointers to TL_TABLE with sinwave output offset */
+static INT32 **SIN_TABLE;
+
+/* LFO table */
+static INT32 *AMS_TABLE;
+static INT32 *VIB_TABLE;
+
+/* envelope output curve table */
+/* attack + decay + OFF */
+static INT32 ENV_CURVE[2*EG_ENT+1];
+
+/* multiple table */
+#define ML 2
+static const UINT32 MUL_TABLE[16]= {
+/* 1/2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15 */
+ 0.50*ML, 1.00*ML, 2.00*ML, 3.00*ML, 4.00*ML, 5.00*ML, 6.00*ML, 7.00*ML,
+ 8.00*ML, 9.00*ML,10.00*ML,10.00*ML,12.00*ML,12.00*ML,15.00*ML,15.00*ML
+};
+#undef ML
+
+/* dummy attack / decay rate ( when rate == 0 ) */
+static INT32 RATE_0[16]=
+{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+
+/* -------------------- static state --------------------- */
+
+/* lock level of common table */
+static int num_lock = 0;
+
+/* work table */
+static void *cur_chip = NULL; /* current chip point */
+/* currenct chip state */
+/* static OPLSAMPLE *bufL,*bufR; */
+static OPL_CH *S_CH;
+static OPL_CH *E_CH;
+OPL_SLOT *SLOT7_1,*SLOT7_2,*SLOT8_1,*SLOT8_2;
+
+static INT32 outd[1];
+static INT32 ams;
+static INT32 vib;
+INT32 *ams_table;
+INT32 *vib_table;
+static INT32 amsIncr;
+static INT32 vibIncr;
+static INT32 feedback2; /* connect for SLOT 2 */
+
+/* log output level */
+#define LOG_ERR 3 /* ERROR */
+#define LOG_WAR 2 /* WARNING */
+#define LOG_INF 1 /* INFORMATION */
+
+#define LOG_LEVEL LOG_INF
+
+#define LOG(n,x) if( (n)>=LOG_LEVEL ) logerror x
+
+/* --------------------- subroutines --------------------- */
+
+INLINE int Limit( int val, int max, int min ) {
+ if ( val > max )
+ val = max;
+ else if ( val < min )
+ val = min;
+
+ return val;
+}
+
+/* ----- key on ----- */
+INLINE void OPL_KEYON(OPL_SLOT *SLOT)
+{
+ /* sine wave restart */
+ SLOT->Cnt = 0;
+ /* set attack */
+ SLOT->evm = ENV_MOD_AR;
+ SLOT->evs = SLOT->evsa;
+ SLOT->evc = EG_AST;
+ SLOT->eve = EG_AED;
+}
+/* ----- key off ----- */
+INLINE void OPL_KEYOFF(OPL_SLOT *SLOT)
+{
+ if( SLOT->evm > ENV_MOD_RR)
+ {
+ /* set envelope counter from envleope output */
+ SLOT->evm = ENV_MOD_RR;
+ if( !(SLOT->evc&EG_DST) )
+ SLOT->evc = (ENV_CURVE[SLOT->evc>>ENV_BITS]<<ENV_BITS) + EG_DST;
+ SLOT->eve = EG_DED;
+ SLOT->evs = SLOT->evsr;
+ }
+}
+
+/* ---------- Envelope Generator & Phase Generator ---------- */
+/* return : envelope output */
+INLINE UINT32 OPL_CALC_SLOT( OPL_SLOT *SLOT )
+{
+ /* calculate envelope generator */
+ if( (SLOT->evc+=SLOT->evs) >= SLOT->eve )
+ {
+ switch( SLOT->evm ){
+ case ENV_MOD_AR: /* ATTACK -> DECAY1 */
+ /* next DR */
+ SLOT->evm = ENV_MOD_DR;
+ SLOT->evc = EG_DST;
+ SLOT->eve = SLOT->SL;
+ SLOT->evs = SLOT->evsd;
+ break;
+ case ENV_MOD_DR: /* DECAY -> SL or RR */
+ SLOT->evc = SLOT->SL;
+ SLOT->eve = EG_DED;
+ if(SLOT->eg_typ)
+ {
+ SLOT->evs = 0;
+ }
+ else
+ {
+ SLOT->evm = ENV_MOD_RR;
+ SLOT->evs = SLOT->evsr;
+ }
+ break;
+ case ENV_MOD_RR: /* RR -> OFF */
+ SLOT->evc = EG_OFF;
+ SLOT->eve = EG_OFF+1;
+ SLOT->evs = 0;
+ break;
+ }
+ }
+ /* calculate envelope */
+ return SLOT->TLL+ENV_CURVE[SLOT->evc>>ENV_BITS]+(SLOT->ams ? ams : 0);
+}
+
+/* set algorythm connection */
+static void set_algorythm( OPL_CH *CH)
+{
+ INT32 *carrier = &outd[0];
+ CH->connect1 = CH->CON ? carrier : &feedback2;
+ CH->connect2 = carrier;
+}
+
+/* ---------- frequency counter for operater update ---------- */
+INLINE void CALC_FCSLOT(OPL_CH *CH,OPL_SLOT *SLOT)
+{
+ int ksr;
+
+ /* frequency step counter */
+ SLOT->Incr = CH->fc * SLOT->mul;
+ ksr = CH->kcode >> SLOT->KSR;
+
+ if( SLOT->ksr != ksr )
+ {
+ SLOT->ksr = ksr;
+ /* attack , decay rate recalculation */
+ SLOT->evsa = SLOT->AR[ksr];
+ SLOT->evsd = SLOT->DR[ksr];
+ SLOT->evsr = SLOT->RR[ksr];
+ }
+ SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl);
+}
+
+/* set multi,am,vib,EG-TYP,KSR,mul */
+INLINE void set_mul(FM_OPL *OPL,int slot,int v)
+{
+ OPL_CH *CH = &OPL->P_CH[slot/2];
+ OPL_SLOT *SLOT = &CH->SLOT[slot&1];
+
+ SLOT->mul = MUL_TABLE[v&0x0f];
+ SLOT->KSR = (v&0x10) ? 0 : 2;
+ SLOT->eg_typ = (v&0x20)>>5;
+ SLOT->vib = (v&0x40);
+ SLOT->ams = (v&0x80);
+ CALC_FCSLOT(CH,SLOT);
+}
+
+/* set ksl & tl */
+INLINE void set_ksl_tl(FM_OPL *OPL,int slot,int v)
+{
+ OPL_CH *CH = &OPL->P_CH[slot/2];
+ OPL_SLOT *SLOT = &CH->SLOT[slot&1];
+ int ksl = v>>6; /* 0 / 1.5 / 3 / 6 db/OCT */
+
+ SLOT->ksl = ksl ? 3-ksl : 31;
+ SLOT->TL = (v&0x3f)*(0.75/EG_STEP); /* 0.75db step */
+
+ if( !(OPL->mode&0x80) )
+ { /* not CSM latch total level */
+ SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl);
+ }
+}
+
+/* set attack rate & decay rate */
+INLINE void set_ar_dr(FM_OPL *OPL,int slot,int v)
+{
+ OPL_CH *CH = &OPL->P_CH[slot/2];
+ OPL_SLOT *SLOT = &CH->SLOT[slot&1];
+ int ar = v>>4;
+ int dr = v&0x0f;
+
+ SLOT->AR = ar ? &OPL->AR_TABLE[ar<<2] : RATE_0;
+ SLOT->evsa = SLOT->AR[SLOT->ksr];
+ if( SLOT->evm == ENV_MOD_AR ) SLOT->evs = SLOT->evsa;
+
+ SLOT->DR = dr ? &OPL->DR_TABLE[dr<<2] : RATE_0;
+ SLOT->evsd = SLOT->DR[SLOT->ksr];
+ if( SLOT->evm == ENV_MOD_DR ) SLOT->evs = SLOT->evsd;
+}
+
+/* set sustain level & release rate */
+INLINE void set_sl_rr(FM_OPL *OPL,int slot,int v)
+{
+ OPL_CH *CH = &OPL->P_CH[slot/2];
+ OPL_SLOT *SLOT = &CH->SLOT[slot&1];
+ int sl = v>>4;
+ int rr = v & 0x0f;
+
+ SLOT->SL = SL_TABLE[sl];
+ if( SLOT->evm == ENV_MOD_DR ) SLOT->eve = SLOT->SL;
+ SLOT->RR = &OPL->DR_TABLE[rr<<2];
+ SLOT->evsr = SLOT->RR[SLOT->ksr];
+ if( SLOT->evm == ENV_MOD_RR ) SLOT->evs = SLOT->evsr;
+}
+
+/* operator output calculator */
+#define OP_OUT(slot,env,con) slot->wavetable[((slot->Cnt+con)/(0x1000000/SIN_ENT))&(SIN_ENT-1)][env]
+/* ---------- calculate channel ---------- */
+INLINE void OPL_CALC_CH( OPL_CH *CH )
+{
+ UINT32 env_out;
+ OPL_SLOT *SLOT;
+
+ feedback2 = 0;
+ /* SLOT 1 */
+ SLOT = &CH->SLOT[SLOT1];
+ env_out=OPL_CALC_SLOT(SLOT);
+ if( env_out < EG_ENT-1 )
+ {
+ /* PG */
+ if(SLOT->vib) SLOT->Cnt += (SLOT->Incr*vib/VIB_RATE);
+ else SLOT->Cnt += SLOT->Incr;
+ /* connection */
+ if(CH->FB)
+ {
+ int feedback1 = (CH->op1_out[0]+CH->op1_out[1])>>CH->FB;
+ CH->op1_out[1] = CH->op1_out[0];
+ *CH->connect1 += CH->op1_out[0] = OP_OUT(SLOT,env_out,feedback1);
+ }
+ else
+ {
+ *CH->connect1 += OP_OUT(SLOT,env_out,0);
+ }
+ }else
+ {
+ CH->op1_out[1] = CH->op1_out[0];
+ CH->op1_out[0] = 0;
+ }
+ /* SLOT 2 */
+ SLOT = &CH->SLOT[SLOT2];
+ env_out=OPL_CALC_SLOT(SLOT);
+ if( env_out < EG_ENT-1 )
+ {
+ /* PG */
+ if(SLOT->vib) SLOT->Cnt += (SLOT->Incr*vib/VIB_RATE);
+ else SLOT->Cnt += SLOT->Incr;
+ /* connection */
+ outd[0] += OP_OUT(SLOT,env_out, feedback2);
+ }
+}
+
+/* ---------- calculate rythm block ---------- */
+#define WHITE_NOISE_db 6.0
+INLINE void OPL_CALC_RH( OPL_CH *CH )
+{
+ UINT32 env_tam,env_sd,env_top,env_hh;
+ int whitenoise = (rand()&1)*(WHITE_NOISE_db/EG_STEP);
+ INT32 tone8;
+
+ OPL_SLOT *SLOT;
+ int env_out;
+
+ /* BD : same as FM serial mode and output level is large */
+ feedback2 = 0;
+ /* SLOT 1 */
+ SLOT = &CH[6].SLOT[SLOT1];
+ env_out=OPL_CALC_SLOT(SLOT);
+ if( env_out < EG_ENT-1 )
+ {
+ /* PG */
+ if(SLOT->vib) SLOT->Cnt += (SLOT->Incr*vib/VIB_RATE);
+ else SLOT->Cnt += SLOT->Incr;
+ /* connectoion */
+ if(CH[6].FB)
+ {
+ int feedback1 = (CH[6].op1_out[0]+CH[6].op1_out[1])>>CH[6].FB;
+ CH[6].op1_out[1] = CH[6].op1_out[0];
+ feedback2 = CH[6].op1_out[0] = OP_OUT(SLOT,env_out,feedback1);
+ }
+ else
+ {
+ feedback2 = OP_OUT(SLOT,env_out,0);
+ }
+ }else
+ {
+ feedback2 = 0;
+ CH[6].op1_out[1] = CH[6].op1_out[0];
+ CH[6].op1_out[0] = 0;
+ }
+ /* SLOT 2 */
+ SLOT = &CH[6].SLOT[SLOT2];
+ env_out=OPL_CALC_SLOT(SLOT);
+ if( env_out < EG_ENT-1 )
+ {
+ /* PG */
+ if(SLOT->vib) SLOT->Cnt += (SLOT->Incr*vib/VIB_RATE);
+ else SLOT->Cnt += SLOT->Incr;
+ /* connectoion */
+ outd[0] += OP_OUT(SLOT,env_out, feedback2)*2;
+ }
+
+ // SD (17) = mul14[fnum7] + white noise
+ // TAM (15) = mul15[fnum8]
+ // TOP (18) = fnum6(mul18[fnum8]+whitenoise)
+ // HH (14) = fnum7(mul18[fnum8]+whitenoise) + white noise
+ env_sd =OPL_CALC_SLOT(SLOT7_2) + whitenoise;
+ env_tam=OPL_CALC_SLOT(SLOT8_1);
+ env_top=OPL_CALC_SLOT(SLOT8_2);
+ env_hh =OPL_CALC_SLOT(SLOT7_1) + whitenoise;
+
+ /* PG */
+ if(SLOT7_1->vib) SLOT7_1->Cnt += (2*SLOT7_1->Incr*vib/VIB_RATE);
+ else SLOT7_1->Cnt += 2*SLOT7_1->Incr;
+ if(SLOT7_2->vib) SLOT7_2->Cnt += ((CH[7].fc*8)*vib/VIB_RATE);
+ else SLOT7_2->Cnt += (CH[7].fc*8);
+ if(SLOT8_1->vib) SLOT8_1->Cnt += (SLOT8_1->Incr*vib/VIB_RATE);
+ else SLOT8_1->Cnt += SLOT8_1->Incr;
+ if(SLOT8_2->vib) SLOT8_2->Cnt += ((CH[8].fc*48)*vib/VIB_RATE);
+ else SLOT8_2->Cnt += (CH[8].fc*48);
+
+ tone8 = OP_OUT(SLOT8_2,whitenoise,0 );
+
+ /* SD */
+ if( env_sd < EG_ENT-1 )
+ outd[0] += OP_OUT(SLOT7_1,env_sd, 0)*8;
+ /* TAM */
+ if( env_tam < EG_ENT-1 )
+ outd[0] += OP_OUT(SLOT8_1,env_tam, 0)*2;
+ /* TOP-CY */
+ if( env_top < EG_ENT-1 )
+ outd[0] += OP_OUT(SLOT7_2,env_top,tone8)*2;
+ /* HH */
+ if( env_hh < EG_ENT-1 )
+ outd[0] += OP_OUT(SLOT7_2,env_hh,tone8)*2;
+}
+
+/* ----------- initialize time tabls ----------- */
+static void init_timetables( FM_OPL *OPL , int ARRATE , int DRRATE )
+{
+ int i;
+ double rate;
+
+ /* make attack rate & decay rate tables */
+ for (i = 0;i < 4;i++) OPL->AR_TABLE[i] = OPL->DR_TABLE[i] = 0;
+ for (i = 4;i <= 60;i++){
+ rate = OPL->freqbase; /* frequency rate */
+ if( i < 60 ) rate *= 1.0+(i&3)*0.25; /* b0-1 : x1 , x1.25 , x1.5 , x1.75 */
+ rate *= 1<<((i>>2)-1); /* b2-5 : shift bit */
+ rate *= (double)(EG_ENT<<ENV_BITS);
+ OPL->AR_TABLE[i] = rate / ARRATE;
+ OPL->DR_TABLE[i] = rate / DRRATE;
+ }
+ for (i = 60;i < 76;i++)
+ {
+ OPL->AR_TABLE[i] = EG_AED-1;
+ OPL->DR_TABLE[i] = OPL->DR_TABLE[60];
+ }
+#if 0
+ for (i = 0;i < 64 ;i++){ /* make for overflow area */
+ LOG(LOG_WAR,("rate %2d , ar %f ms , dr %f ms \n",i,
+ ((double)(EG_ENT<<ENV_BITS) / OPL->AR_TABLE[i]) * (1000.0 / OPL->rate),
+ ((double)(EG_ENT<<ENV_BITS) / OPL->DR_TABLE[i]) * (1000.0 / OPL->rate) ));
+ }
+#endif
+}
+
+/* ---------- generic table initialize ---------- */
+static int OPLOpenTable( void )
+{
+ int s,t;
+ double rate;
+ int i,j;
+ double pom;
+
+ /* allocate dynamic tables */
+ if( (TL_TABLE = malloc(TL_MAX*2*sizeof(INT32))) == NULL)
+ return 0;
+ if( (SIN_TABLE = malloc(SIN_ENT*4 *sizeof(INT32 *))) == NULL)
+ {
+ free(TL_TABLE);
+ return 0;
+ }
+ if( (AMS_TABLE = malloc(AMS_ENT*2 *sizeof(INT32))) == NULL)
+ {
+ free(TL_TABLE);
+ free(SIN_TABLE);
+ return 0;
+ }
+ if( (VIB_TABLE = malloc(VIB_ENT*2 *sizeof(INT32))) == NULL)
+ {
+ free(TL_TABLE);
+ free(SIN_TABLE);
+ free(AMS_TABLE);
+ return 0;
+ }
+ /* make total level table */
+ for (t = 0;t < EG_ENT-1 ;t++){
+ rate = ((1<<TL_BITS)-1)/pow(10,EG_STEP*t/20); /* dB -> voltage */
+ TL_TABLE[ t] = (int)rate;
+ TL_TABLE[TL_MAX+t] = -TL_TABLE[t];
+/* LOG(LOG_INF,("TotalLevel(%3d) = %x\n",t,TL_TABLE[t]));*/
+ }
+ /* fill volume off area */
+ for ( t = EG_ENT-1; t < TL_MAX ;t++){
+ TL_TABLE[t] = TL_TABLE[TL_MAX+t] = 0;
+ }
+
+ /* make sinwave table (total level offet) */
+ /* degree 0 = degree 180 = off */
+ SIN_TABLE[0] = SIN_TABLE[SIN_ENT/2] = &TL_TABLE[EG_ENT-1];
+ for (s = 1;s <= SIN_ENT/4;s++){
+ pom = sin(2*PI*s/SIN_ENT); /* sin */
+ pom = 20*log10(1/pom); /* decibel */
+ j = pom / EG_STEP; /* TL_TABLE steps */
+
+ /* degree 0 - 90 , degree 180 - 90 : plus section */
+ SIN_TABLE[ s] = SIN_TABLE[SIN_ENT/2-s] = &TL_TABLE[j];
+ /* degree 180 - 270 , degree 360 - 270 : minus section */
+ SIN_TABLE[SIN_ENT/2+s] = SIN_TABLE[SIN_ENT -s] = &TL_TABLE[TL_MAX+j];
+/* LOG(LOG_INF,("sin(%3d) = %f:%f db\n",s,pom,(double)j * EG_STEP));*/
+ }
+ for (s = 0;s < SIN_ENT;s++)
+ {
+ SIN_TABLE[SIN_ENT*1+s] = s<(SIN_ENT/2) ? SIN_TABLE[s] : &TL_TABLE[EG_ENT];
+ SIN_TABLE[SIN_ENT*2+s] = SIN_TABLE[s % (SIN_ENT/2)];
+ SIN_TABLE[SIN_ENT*3+s] = (s/(SIN_ENT/4))&1 ? &TL_TABLE[EG_ENT] : SIN_TABLE[SIN_ENT*2+s];
+ }
+
+ /* envelope counter -> envelope output table */
+ for (i=0; i<EG_ENT; i++)
+ {
+ /* ATTACK curve */
+ pom = pow( ((double)(EG_ENT-1-i)/EG_ENT) , 8 ) * EG_ENT;
+ /* if( pom >= EG_ENT ) pom = EG_ENT-1; */
+ ENV_CURVE[i] = (int)pom;
+ /* DECAY ,RELEASE curve */
+ ENV_CURVE[(EG_DST>>ENV_BITS)+i]= i;
+ }
+ /* off */
+ ENV_CURVE[EG_OFF>>ENV_BITS]= EG_ENT-1;
+ /* make LFO ams table */
+ for (i=0; i<AMS_ENT; i++)
+ {
+ pom = (1.0+sin(2*PI*i/AMS_ENT))/2; /* sin */
+ AMS_TABLE[i] = (1.0/EG_STEP)*pom; /* 1dB */
+ AMS_TABLE[AMS_ENT+i] = (4.8/EG_STEP)*pom; /* 4.8dB */
+ }
+ /* make LFO vibrate table */
+ for (i=0; i<VIB_ENT; i++)
+ {
+ /* 100cent = 1seminote = 6% ?? */
+ pom = (double)VIB_RATE*0.06*sin(2*PI*i/VIB_ENT); /* +-100sect step */
+ VIB_TABLE[i] = VIB_RATE + (pom*0.07); /* +- 7cent */
+ VIB_TABLE[VIB_ENT+i] = VIB_RATE + (pom*0.14); /* +-14cent */
+ /* LOG(LOG_INF,("vib %d=%d\n",i,VIB_TABLE[VIB_ENT+i])); */
+ }
+ return 1;
+}
+
+
+static void OPLCloseTable()
+{
+ free(TL_TABLE);
+ free(SIN_TABLE);
+ free(AMS_TABLE);
+ free(VIB_TABLE);
+}
+
+/* ---------- opl initialize ---------- */
+static void OPL_initalize(FM_OPL *OPL)
+{
+ int fn;
+
+ /* frequency base */
+ OPL->freqbase = (OPL->rate) ? ((double)OPL->clock / OPL->rate) / 72 : 0;
+
+ /* make time tables */
+ init_timetables( OPL , OPL_ARRATE , OPL_DRRATE );
+ /* make fnumber -> increment counter table */
+ for( fn=0 ; fn < 1024 ; fn++ )
+ {
+ OPL->FN_TABLE[fn] = OPL->freqbase * fn * FREQ_RATE * (1<<7) / 2;
+ }
+ /* LFO freq.table */
+ OPL->amsIncr = OPL->rate ? (double)AMS_ENT*(1<<AMS_SHIFT) / OPL->rate * 3.7 * ((double)OPL->clock/3600000) : 0;
+ OPL->vibIncr = OPL->rate ? (double)VIB_ENT*(1<<VIB_SHIFT) / OPL->rate * 6.4 * ((double)OPL->clock/3600000) : 0;
+}
+
+/* ---------- write to OPL registers ---------- */
+void OPLWrite(FM_OPL *OPL, int r, int v)
+{
+ OPL_CH *CH;
+ int slot;
+ int block_fnum;
+
+ switch(r&0xe0)
+ {
+ case 0x00: /* 00-1f:controll */
+ switch(r&0x1f)
+ {
+ case 0x01:
+ /* wave selector enable */
+ OPL->wavesel = v&0x20;
+ if(!OPL->wavesel)
+ {
+ /* preset compatible mode */
+ int c;
+ for(c=0;c<OPL->max_ch;c++)
+ {
+ OPL->P_CH[c].SLOT[SLOT1].wavetable = &SIN_TABLE[0];
+ OPL->P_CH[c].SLOT[SLOT2].wavetable = &SIN_TABLE[0];
+ }
+ }
+ return;
+ case 0x02: /* Timer 1 */
+ break;
+ case 0x03: /* Timer 2 */
+ return;
+ case 0x04: /* IRQ clear / mask and Timer enable */
+ return;
+ case 0x08: /* MODE,DELTA-T : CSM,NOTESEL,x,x,smpl,da/ad,64k,rom */
+ OPL->mode = v;
+ return;
+ }
+ break;
+ case 0x20: /* am,vib,ksr,eg type,mul */
+ slot = slot_array[r&0x1f];
+ if(slot == -1) return;
+ set_mul(OPL,slot,v);
+ return;
+ case 0x40:
+ slot = slot_array[r&0x1f];
+ if(slot == -1) return;
+ set_ksl_tl(OPL,slot,v);
+ return;
+ case 0x60:
+ slot = slot_array[r&0x1f];
+ if(slot == -1) return;
+ set_ar_dr(OPL,slot,v);
+ return;
+ case 0x80:
+ slot = slot_array[r&0x1f];
+ if(slot == -1) return;
+ set_sl_rr(OPL,slot,v);
+ return;
+ case 0xa0:
+ switch(r)
+ {
+ case 0xbd:
+ /* amsep,vibdep,r,bd,sd,tom,tc,hh */
+ {
+ UINT8 rkey = OPL->rythm^v;
+ OPL->ams_table = &AMS_TABLE[v&0x80 ? AMS_ENT : 0];
+ OPL->vib_table = &VIB_TABLE[v&0x40 ? VIB_ENT : 0];
+ OPL->rythm = v&0x3f;
+ if(OPL->rythm&0x20)
+ {
+#if 0
+ usrintf_showmessage("OPL Rythm mode select");
+#endif
+ /* BD key on/off */
+ if(rkey&0x10)
+ {
+ if(v&0x10)
+ {
+ OPL->P_CH[6].op1_out[0] = OPL->P_CH[6].op1_out[1] = 0;
+ OPL_KEYON(&OPL->P_CH[6].SLOT[SLOT1]);
+ OPL_KEYON(&OPL->P_CH[6].SLOT[SLOT2]);
+ }
+ else
+ {
+ OPL_KEYOFF(&OPL->P_CH[6].SLOT[SLOT1]);
+ OPL_KEYOFF(&OPL->P_CH[6].SLOT[SLOT2]);
+ }
+ }
+ /* SD key on/off */
+ if(rkey&0x08)
+ {
+ if(v&0x08) OPL_KEYON(&OPL->P_CH[7].SLOT[SLOT2]);
+ else OPL_KEYOFF(&OPL->P_CH[7].SLOT[SLOT2]);
+ }/* TAM key on/off */
+ if(rkey&0x04)
+ {
+ if(v&0x04) OPL_KEYON(&OPL->P_CH[8].SLOT[SLOT1]);
+ else OPL_KEYOFF(&OPL->P_CH[8].SLOT[SLOT1]);
+ }
+ /* TOP-CY key on/off */
+ if(rkey&0x02)
+ {
+ if(v&0x02) OPL_KEYON(&OPL->P_CH[8].SLOT[SLOT2]);
+ else OPL_KEYOFF(&OPL->P_CH[8].SLOT[SLOT2]);
+ }
+ /* HH key on/off */
+ if(rkey&0x01)
+ {
+ if(v&0x01) OPL_KEYON(&OPL->P_CH[7].SLOT[SLOT1]);
+ else OPL_KEYOFF(&OPL->P_CH[7].SLOT[SLOT1]);
+ }
+ }
+ }
+ return;
+ }
+ /* keyon,block,fnum */
+ if( (r&0x0f) > 8) return;
+ CH = &OPL->P_CH[r&0x0f];
+ if(!(r&0x10))
+ { /* a0-a8 */
+ block_fnum = (CH->block_fnum&0x1f00) | v;
+ }
+ else
+ { /* b0-b8 */
+ int keyon = (v>>5)&1;
+ block_fnum = ((v&0x1f)<<8) | (CH->block_fnum&0xff);
+ if(CH->keyon != keyon)
+ {
+ if( (CH->keyon=keyon) )
+ {
+ CH->op1_out[0] = CH->op1_out[1] = 0;
+ OPL_KEYON(&CH->SLOT[SLOT1]);
+ OPL_KEYON(&CH->SLOT[SLOT2]);
+ }
+ else
+ {
+ OPL_KEYOFF(&CH->SLOT[SLOT1]);
+ OPL_KEYOFF(&CH->SLOT[SLOT2]);
+ }
+ }
+ }
+ /* update */
+ if(CH->block_fnum != block_fnum)
+ {
+ int blockRv = 7-(block_fnum>>10);
+ int fnum = block_fnum&0x3ff;
+ CH->block_fnum = block_fnum;
+
+ CH->ksl_base = KSL_TABLE[block_fnum>>6];
+ CH->fc = OPL->FN_TABLE[fnum]>>blockRv;
+ CH->kcode = CH->block_fnum>>9;
+ if( (OPL->mode&0x40) && CH->block_fnum&0x100) CH->kcode |=1;
+ CALC_FCSLOT(CH,&CH->SLOT[SLOT1]);
+ CALC_FCSLOT(CH,&CH->SLOT[SLOT2]);
+ }
+ return;
+ case 0xc0:
+ /* FB,C */
+ if( (r&0x0f) > 8) return;
+ CH = &OPL->P_CH[r&0x0f];
+ {
+ int feedback = (v>>1)&7;
+ CH->FB = feedback ? (8+1) - feedback : 0;
+ CH->CON = v&1;
+ set_algorythm(CH);
+ }
+ return;
+ case 0xe0: /* wave type */
+ slot = slot_array[r&0x1f];
+ if(slot == -1) return;
+ CH = &OPL->P_CH[slot/2];
+ if(OPL->wavesel)
+ {
+ /* LOG(LOG_INF,("OPL SLOT %d wave select %d\n",slot,v&3)); */
+ CH->SLOT[slot&1].wavetable = &SIN_TABLE[(v&0x03)*SIN_ENT];
+ }
+ return;
+ }
+}
+
+/* lock/unlock for common table */
+static int OPL_LockTable(void)
+{
+ num_lock++;
+ if(num_lock>1) return 0;
+ /* first time */
+ cur_chip = NULL;
+ /* allocate total level table (128kb space) */
+ if( !OPLOpenTable() )
+ {
+ num_lock--;
+ return -1;
+ }
+ return 0;
+}
+
+static void OPL_UnLockTable(void)
+{
+ if(num_lock) num_lock--;
+ if(num_lock) return;
+ /* last time */
+ cur_chip = NULL;
+ OPLCloseTable();
+}
+
+/* ---------- update chip ----------- */
+void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length)
+{
+ int i;
+ int data;
+ OPLSAMPLE *buf = buffer;
+ UINT32 amsCnt = OPL->amsCnt;
+ UINT32 vibCnt = OPL->vibCnt;
+ UINT8 rythm = OPL->rythm&0x20;
+ OPL_CH *CH,*R_CH;
+
+ if( (void *)OPL != cur_chip ){
+ cur_chip = (void *)OPL;
+ /* channel pointers */
+ S_CH = OPL->P_CH;
+ E_CH = &S_CH[9];
+ /* rythm slot */
+ SLOT7_1 = &S_CH[7].SLOT[SLOT1];
+ SLOT7_2 = &S_CH[7].SLOT[SLOT2];
+ SLOT8_1 = &S_CH[8].SLOT[SLOT1];
+ SLOT8_2 = &S_CH[8].SLOT[SLOT2];
+ /* LFO state */
+ amsIncr = OPL->amsIncr;
+ vibIncr = OPL->vibIncr;
+ ams_table = OPL->ams_table;
+ vib_table = OPL->vib_table;
+ }
+ R_CH = rythm ? &S_CH[6] : E_CH;
+ for( i=0; i < length ; i++ )
+ {
+ /* channel A channel B channel C */
+ /* LFO */
+ ams = ams_table[(amsCnt+=amsIncr)>>AMS_SHIFT];
+ vib = vib_table[(vibCnt+=vibIncr)>>VIB_SHIFT];
+ outd[0] = 0;
+ /* FM part */
+ for(CH=S_CH ; CH < R_CH ; CH++)
+ OPL_CALC_CH(CH);
+ /* Rythn part */
+ if(rythm)
+ OPL_CALC_RH(S_CH);
+ /* limit check */
+ data = Limit( outd[0] , OPL_MAXOUT, OPL_MINOUT );
+ /* store to sound buffer */
+ buf[i] = data >> OPL_OUTSB;
+ }
+
+ OPL->amsCnt = amsCnt;
+ OPL->vibCnt = vibCnt;
+#ifdef OPL_OUTPUT_LOG
+ if(opl_dbg_fp)
+ {
+ for(opl_dbg_chip=0;opl_dbg_chip<opl_dbg_maxchip;opl_dbg_chip++)
+ if( opl_dbg_opl[opl_dbg_chip] == OPL) break;
+ fprintf(opl_dbg_fp,"%c%c%c",0x20+opl_dbg_chip,length&0xff,length/256);
+ }
+#endif
+}
+
+/* ---------- reset chip ---------- */
+void OPLResetChip(FM_OPL *OPL)
+{
+ int c,s;
+ int i;
+
+ /* reset chip */
+ OPL->mode = 0; /* normal mode */
+ /* reset with register write */
+ OPLWrite(OPL,0x01,0); /* wavesel disable */
+ OPLWrite(OPL,0x02,0); /* Timer1 */
+ OPLWrite(OPL,0x03,0); /* Timer2 */
+ OPLWrite(OPL,0x04,0); /* IRQ mask clear */
+ for(i = 0xff ; i >= 0x20 ; i-- ) OPLWrite(OPL,i,0);
+ /* reset OPerator paramater */
+ for( c = 0 ; c < OPL->max_ch ; c++ )
+ {
+ OPL_CH *CH = &OPL->P_CH[c];
+ /* OPL->P_CH[c].PAN = OPN_CENTER; */
+ for(s = 0 ; s < 2 ; s++ )
+ {
+ /* wave table */
+ CH->SLOT[s].wavetable = &SIN_TABLE[0];
+ /* CH->SLOT[s].evm = ENV_MOD_RR; */
+ CH->SLOT[s].evc = EG_OFF;
+ CH->SLOT[s].eve = EG_OFF+1;
+ CH->SLOT[s].evs = 0;
+ }
+ }
+}
+
+/* ---------- Create a virtual YM3812 ---------- */
+FM_OPL *OPLCreate(int type, int clock, int rate)
+{
+ char *ptr;
+ FM_OPL *OPL;
+ int state_size;
+ int max_ch = 9; /* normaly 9 channels */
+
+ if( OPL_LockTable() ==-1) return NULL;
+ /* allocate OPL state space */
+ state_size = sizeof(FM_OPL);
+ state_size += sizeof(OPL_CH)*max_ch;
+
+ /* allocate memory block */
+ ptr = malloc(state_size);
+ if(ptr==NULL) return NULL;
+ /* clear */
+ memset(ptr,0,state_size);
+
+ OPL = (FM_OPL *)ptr; ptr+=sizeof(FM_OPL);
+ OPL->P_CH = (OPL_CH *)ptr; ptr+=sizeof(OPL_CH)*max_ch;
+
+ /* set channel state pointer */
+ OPL->type = type;
+ OPL->clock = clock;
+ OPL->rate = rate;
+ OPL->max_ch = max_ch;
+ /* init grobal tables */
+ OPL_initalize(OPL);
+ /* reset chip */
+ OPLResetChip(OPL);
+#ifdef OPL_OUTPUT_LOG
+ if(!opl_dbg_fp)
+ {
+ opl_dbg_fp = fopen("opllog.opl","wb");
+ opl_dbg_maxchip = 0;
+ }
+ if(opl_dbg_fp)
+ {
+ opl_dbg_opl[opl_dbg_maxchip] = OPL;
+ fprintf(opl_dbg_fp,"%c%c%c%c%c%c",0x00+opl_dbg_maxchip,
+ type,
+ clock&0xff,
+ (clock/0x100)&0xff,
+ (clock/0x10000)&0xff,
+ (clock/0x1000000)&0xff);
+ opl_dbg_maxchip++;
+ }
+#endif
+ return OPL;
+}
+
+/* ---------- Destroy a virtual YM3812 ---------- */
+void OPLDestroy(FM_OPL *OPL)
+{
+#ifdef OPL_OUTPUT_LOG
+ if(opl_dbg_fp)
+ {
+ fclose(opl_dbg_fp);
+ opl_dbg_fp = NULL;
+ }
+#endif
+ OPL_UnLockTable();
+ free(OPL);
+}
Added: trunk/target/demos/wolfenstein3d/fmopl.h
===================================================================
--- trunk/target/demos/wolfenstein3d/fmopl.h (rev 0)
+++ trunk/target/demos/wolfenstein3d/fmopl.h 2007-02-25 11:17:37 UTC (rev 572)
@@ -0,0 +1,108 @@
+#ifndef __FMOPL_H_
+#define __FMOPL_H_
+
+/* --- system optimize --- */
+/* select bit size of output : 8 or 16 */
+#define OPL_OUTPUT_BIT 16
+
+typedef unsigned char UINT8; /* unsigned 8bit */
+typedef unsigned short UINT16; /* unsigned 16bit */
+typedef unsigned int UINT32; /* unsigned 32bit */
+typedef signed char INT8; /* signed 8bit */
+typedef signed short INT16; /* signed 16bit */
+typedef signed int INT32; /* signed 32bit */
+
+#if (OPL_OUTPUT_BIT==16)
+typedef INT16 OPLSAMPLE;
+#endif
+#if (OPL_OUTPUT_BIT==8)
+typedef unsigned char OPLSAMPLE;
+#endif
+
+/* ---------- OPL one of slot ---------- */
+typedef struct fm_opl_slot {
+ INT32 TL; /* total level :TL << 8 */
+ INT32 TLL; /* adjusted now TL ...
[truncated message content] |
|
From: <ca...@us...> - 2007-02-18 16:41:46
|
Revision: 571
http://armadeus.svn.sourceforge.net/armadeus/?rev=571&view=rev
Author: carbure
Date: 2007-02-18 08:41:41 -0800 (Sun, 18 Feb 2007)
Log Message:
-----------
Add Samba services smbmount, nmbd and smbd
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/rootfs/skel.tar.gz
Added Paths:
-----------
trunk/buildroot/package/samba/
trunk/buildroot/package/samba/Config.in
trunk/buildroot/package/samba/S81smb
trunk/buildroot/package/samba/samba-001.patch
trunk/buildroot/package/samba/samba.mk
trunk/buildroot/package/samba/smb.conf
trunk/buildroot/package/samba/smbpasswd
trunk/patches/014-buildroot-samba.diff
Removed Paths:
-------------
trunk/target/packages/samba/
Added: trunk/buildroot/package/samba/Config.in
===================================================================
--- trunk/buildroot/package/samba/Config.in (rev 0)
+++ trunk/buildroot/package/samba/Config.in 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1,38 @@
+config BR2_PACKAGE_SAMBA
+ bool "samba"
+ default n
+ help
+ Samba allows the interoperability between Linux/Unix servers
+ and Windows-based clients.
+ http://www.samba.org/
+
+config BR2_PACKAGE_SMBMOUNT
+ bool "smbmount (660 Kb) service in target"
+ default y
+ depends on BR2_PACKAGE_SAMBA
+ help
+ Put smbmount & smbumount service in the target.
+ IMPORTANT:
+ Needs the mount command from utils-linux package (not mount from the busybox)
+
+config BR2_PACKAGE_SMBD
+ bool "nmbd & smbd (3.1 Mb) service in target"
+ default n
+ depends on BR2_PACKAGE_SAMBA
+ help
+ Put nmbd & smbd service in the target.
+
+config BR2_PACKAGE_SMB_START
+ bool "add samba init script"
+ default y
+ depends on BR2_PACKAGE_SMBD
+ help
+ Put smbd & nmbd intialization script in /etc/init.d.
+
+config BR2_PACKAGE_SMBPASSWD
+ bool "smbpasswd (1.2 Mb) service in target"
+ default n
+ depends on BR2_PACKAGE_SAMBA
+ help
+ Put smbpasswd service in the target.
+
Added: trunk/buildroot/package/samba/S81smb
===================================================================
--- trunk/buildroot/package/samba/S81smb (rev 0)
+++ trunk/buildroot/package/samba/S81smb 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# start/stop samba services
+
+
+test -f /usr/sbin/smbd || exit 0
+test -f /usr/sbin/nmbd || exit 0
+
+[ -f /etc/samba/smb.conf ] || exit 0
+
+
+start() {
+ echo "Starting smbd services"
+ mkdir -p /var/log/samba/
+ /usr/sbin/smbd -D
+ RETVAL=$?
+ echo "Starting nmbd services"
+ /usr/sbin/nmbd -D
+ RETVAL2=$?
+ if [ $RETVAL -ne 0 ] ; then
+ return 1
+ fi
+ if [ $RETVAL2 -ne 0 ] ; then
+ return 1
+ fi
+ return 0
+}
+
+stop() {
+ echo "Shutting down smbd services"
+ killall smbd
+ RETVAL=$?
+ echo "Shutting down nmbd services"
+ killall nmbd
+ RETVAL2=$?
+
+ if [ $RETVAL -ne 0 ] ; then
+ return 1
+ fi
+ if [ $RETVAL2 -ne 0 ] ; then
+ return 1
+ fi
+ return 0
+}
+
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
+
Added: trunk/buildroot/package/samba/samba-001.patch
===================================================================
--- trunk/buildroot/package/samba/samba-001.patch (rev 0)
+++ trunk/buildroot/package/samba/samba-001.patch 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1,11 @@
+--- samba-3.0.20/source/configure.org 2007-01-28 11:11:41.000000000 +0100
++++ samba-3.0.20/source/configure 2007-01-28 11:45:04.000000000 +0100
+@@ -18730,7 +18730,7 @@
+ case "$host_os" in
+ *linux*)
+ # glibc <= 2.3.2 has a broken getgrouplist
+- if test "$cross_compiling" = yes; then
++ if test "$cross_compiling" = no; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+ See \`config.log' for more details." >&5
+ echo "$as_me: error: cannot run test program while cross compiling
Added: trunk/buildroot/package/samba/samba.mk
===================================================================
--- trunk/buildroot/package/samba/samba.mk (rev 0)
+++ trunk/buildroot/package/samba/samba.mk 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1,129 @@
+#############################################################
+#
+# samba
+#
+#############################################################
+
+# TARGETS
+SAMBA_VER:=3.0.20
+SAMBA_SITE:=http://us3.samba.org/samba/ftp/old-versions/
+SAMBA_PUBLICKEY_SITE:=http://us4.samba.org/samba/ftp/
+SAMBA_SOURCE:=samba-$(SAMBA_VER).tar.gz
+SAMBA_SOURCE_KEY:=samba-$(SAMBA_VER).tar.asc
+SAMBA_PUBLICKEY:=samba-pubkey.asc
+SAMBA_SIGNATURE:=samba-$(SAMBA_VER).tar.gz.asc
+SAMBA_DIR:=$(BUILD_DIR)/samba-$(SAMBA_VER)
+SAMBA_SRC_DIR:=$(SAMBA_DIR)/source
+SAMBA_BIN_DIR:=$(SAMBA_SRC_DIR)/bin
+SAMBA_PREFIX:=/etc/samba
+
+# remove the previous one
+removeoldsamba:
+ rm -f $(TARGET_DIR)/usr/bin/smbmount $(TARGET_DIR)/usr/bin/smbumount $(TARGET_DIR)/usr/bin/smbmnt
+ rm -f $(TARGET_DIR)/usr/sbin/nmbd
+ rm -f $(TARGET_DIR)/usr/sbin/smbd
+ rm -f $(TARGET_DIR)/usr/bin/smbpasswd
+ rm -Rf $(TARGET_DIR)$(SAMBA_PREFIX)
+ rm -f $(TARGET_DIR)/etc/init.d/S81smb
+
+
+$(DL_DIR)/$(SAMBA_SOURCE):
+ $(WGET) -P $(DL_DIR) $(SAMBA_SITE)/$(SAMBA_SOURCE)
+
+$(DL_DIR)/$(SAMBA_SOURCE_KEY):
+ $(WGET) -P $(DL_DIR) $(SAMBA_SITE)/$(SAMBA_SOURCE_KEY)
+
+$(DL_DIR)/$(SAMBA_PUBLICKEY):
+ $(WGET) -P $(DL_DIR) $(SAMBA_PUBLICKEY_SITE)/$(SAMBA_PUBLICKEY)
+
+
+$(SAMBA_DIR)/.unpacked: $(DL_DIR)/$(SAMBA_SOURCE)
+ gunzip -c $(DL_DIR)/$(SAMBA_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ toolchain/patch-kernel.sh $(SAMBA_DIR) package/samba/ samba\*.patch
+ touch $(SAMBA_DIR)/.unpacked
+
+# NOTES: --> disable cups (compiling problem) cups is not necessary
+# --> add option --enable-debug if necessary!!
+# --host="arm-armadeus-linux-uclibc" force cross compilation and means
+# host_cpu='arm'
+# host_os='linux-uclibc'
+# host_vendor='armadeus'
+# use -DHAVE_GETTIMEOFDAY_TZ because of gettimeofday() use a second argument
+# (obsolete but defined TZ)
+# PIE (Periodic Interrupt Enable) must be disabled (not available on Armadeus)
+
+$(SAMBA_SRC_DIR)/.configured: $(SAMBA_DIR)/.unpacked
+ cd $(SAMBA_SRC_DIR) ;\
+ ./configure --host="arm-armadeus-linux-uclibc" --prefix=$(SAMBA_PREFIX) \
+ --with-logfilebase=/var/log/samba --with-piddir=/var/lock --with-configdir=$(SAMBA_PREFIX)\
+ --disable-cups --disable-pie --with-smbmount --with-automount --disable-xmltest \
+ CC=arm-linux-gcc \
+ CFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -DHAVE_GETTIMEOFDAY_TZ \
+ -DHAVE_IFACE_IFCONF -DUSE_SETEUID -DHAVE_STRUCT_TIMESPEC "
+ touch $(SAMBA_SRC_DIR)/.configured
+
+
+$(SAMBA_SRC_DIR)/Makefile: $(SAMBA_SRC_DIR)/.configured
+ cd $(SAMBA_SRC_DIR) ;\
+ $(MAKE) proto ; \
+ $(MAKE)
+ $(STRIP) $(SAMBA_BIN_DIR)/*
+
+samba: $(SAMBA_SRC_DIR)/Makefile
+ mkdir -p $(TARGET_DIR)$(SAMBA_PREFIX)
+ mkdir -p $(TARGET_DIR)$(SAMBA_PREFIX)/private
+ mkdir -p $(TARGET_DIR)$(SAMBA_PREFIX)/var/locks
+ $(INSTALL) -m 0644 -D package/samba/smb.conf $(TARGET_DIR)$(SAMBA_PREFIX)/smb.conf
+ $(INSTALL) -m 0600 -D package/samba/smbpasswd $(TARGET_DIR)$(SAMBA_PREFIX)/private/smbpasswd
+
+smbautostart:
+ mkdir -p $(TARGET_DIR)/etc/init.d
+ $(INSTALL) -m 0775 -D package/samba/S81smb $(TARGET_DIR)/etc/init.d/S81smb
+
+smbmount:
+ mkdir -p $(TARGET_DIR)/usr/bin
+ cp -dpf $(SAMBA_BIN_DIR)/smbmount $(TARGET_DIR)/usr/bin/
+ cp -dpf $(SAMBA_BIN_DIR)/smbumount $(TARGET_DIR)/usr/bin/
+ cp -dpf $(SAMBA_BIN_DIR)/smbmnt $(TARGET_DIR)/usr/bin/
+
+smbd:
+ mkdir -p $(TARGET_DIR)/usr/sbin
+ cp -dpf $(SAMBA_BIN_DIR)/smbd $(TARGET_DIR)/usr/sbin/
+ cp -dpf $(SAMBA_BIN_DIR)/nmbd $(TARGET_DIR)/usr/sbin/
+
+smbpasswd:
+ mkdir -p $(TARGET_DIR)/usr/sbin
+ cp -dpf $(SAMBA_BIN_DIR)/smbpasswd $(TARGET_DIR)/usr/bin/
+
+samba-dirclean:
+ rm -rf $(SAMBA_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+
+TARGETS+=removeoldsamba
+
+ifeq ($(strip $(BR2_PACKAGE_SAMBA)),y)
+TARGETS+=samba
+endif
+
+ifeq ($(strip $(BR2_PACKAGE_SMBMOUNT)),y)
+TARGETS+=smbmount
+endif
+
+ifeq ($(strip $(BR2_PACKAGE_SMBD)),y)
+TARGETS+=smbd
+endif
+
+ifeq ($(strip $(BR2_PACKAGE_SMBPASSWD)),y)
+TARGETS+=smbpasswd
+endif
+
+ifeq ($(strip $(BR2_PACKAGE_SMB_START)),y)
+TARGETS+=smbautostart
+endif
+
+
Added: trunk/buildroot/package/samba/smb.conf
===================================================================
--- trunk/buildroot/package/samba/smb.conf (rev 0)
+++ trunk/buildroot/package/samba/smb.conf 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1,77 @@
+# This is the main Samba configuration file. You should read the
+# smb.conf(5) manual page in order to understand the options listed
+# here. Samba has a huge number of configurable options (perhaps too
+# many!) most of which are not shown in this example
+#
+# Any line which starts with a ; (semi-colon) or a # (hash)
+# is a comment and is ignored. In this example we will use a #
+# for commentry and a ; for parts of the config file that you
+# may wish to enable
+#
+# NOTE: Whenever you modify this file you should run the command "testparm"
+# to check that you have not made any basic syntactic errors.
+#
+#======================= Global Settings =====================================
+[global]
+
+# workgroup = NT-Domain-Name or Workgroup-Name
+ workgroup = LINUXGROUP
+ netbios name = apf9328
+
+# server string is the equivalent of the NT Description field
+ server string = Apf9328 Samba Server
+
+
+# This option is important for security. It allows you to restrict
+# connections to machines which are on your local network. The
+# following example restricts access to two C class networks and
+# the "loopback" interface. For more examples of the syntax see
+# the smb.conf man page
+; hosts allow = 192.168.1. 192.168.2. 127.
+hosts allow = 192.168. 127.
+
+
+# this tells Samba to use a separate log file for each machine
+# that connects
+# log file = /var/log/samba/%m.log
+# all log information in one file
+ log file = /var/log/samba/log.smbd
+
+# Put a capping on the size of the log files (in Kb).
+ max log size = 50
+
+# Security mode. Most people will want user level security. See
+# security_level.txt for details.
+ security = user
+ socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
+
+
+ dns proxy = no
+
+
+#============================ Share Definitions ==============================
+ idmap uid = 16777216-33554431
+ idmap gid = 16777216-33554431
+ template shell = /bin/false
+ winbind use default domain = no
+ username map = /etc/samba/smbusers
+ guest ok = yes
+ guest account = default
+ security = user
+ encrypt passwords = yes
+# This one is useful for people to share files
+
+[tmp]
+ path = /tmp
+ public = yes
+ writable = yes
+ printable = no
+ browsable = yes
+
+[default]
+ path = /home/default
+ valid users = default
+ writable = yes
+ printable = no
+ browsable = yes
+
Added: trunk/buildroot/package/samba/smbpasswd
===================================================================
--- trunk/buildroot/package/samba/smbpasswd (rev 0)
+++ trunk/buildroot/package/samba/smbpasswd 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1 @@
+default:1000:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:[U ]:LCT-0000007A:
Property changes on: trunk/buildroot/package/samba/smbpasswd
___________________________________________________________________
Name: svn:executable
+ *
Modified: trunk/buildroot/target/device/armadeus/rootfs/skel.tar.gz
===================================================================
(Binary files differ)
Added: trunk/patches/014-buildroot-samba.diff
===================================================================
--- trunk/patches/014-buildroot-samba.diff (rev 0)
+++ trunk/patches/014-buildroot-samba.diff 2007-02-18 16:41:41 UTC (rev 571)
@@ -0,0 +1,10 @@
+--- buildrootref/package/Config.in 2007-01-21 23:30:06.000000000 +0100
++++ buildroot/package/Config.in 2007-02-12 16:32:53.000000000 +0100
+@@ -126,6 +126,7 @@ source "package/readline/Config.in"
+ source "package/rsync/Config.in"
+ source "package/ruby/Config.in"
+ source "package/rxvt/Config.in"
++source "package/samba/Config.in"
+ source "package/sdl/Config.in"
+ source "package/sfdisk/Config.in"
+ source "package/slang/Config.in"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2007-02-07 20:01:18
|
Revision: 570
http://armadeus.svn.sourceforge.net/armadeus/?rev=570&view=rev
Author: jorasse
Date: 2007-02-07 12:01:13 -0800 (Wed, 07 Feb 2007)
Log Message:
-----------
Create Armadeus project release 2.0
Added Paths:
-----------
tags/release-2.0/
Copied: tags/release-2.0 (from rev 569, trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2007-02-07 19:59:14
|
Revision: 569
http://armadeus.svn.sourceforge.net/armadeus/?rev=569&view=rev
Author: jorasse
Date: 2007-02-07 11:58:50 -0800 (Wed, 07 Feb 2007)
Log Message:
-----------
Create Armadeus release 1.6
Added Paths:
-----------
tags/release-1.6/
Copied: tags/release-1.6 (from rev 406, trunk/software)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-02-04 21:56:27
|
Revision: 568
http://armadeus.svn.sourceforge.net/armadeus/?rev=568&view=rev
Author: artemys
Date: 2007-02-04 13:56:25 -0800 (Sun, 04 Feb 2007)
Log Message:
-----------
[LINUX] Pffff.... I hope this one is the last init problem in PWM driver ! ;-)
Modified Paths:
--------------
trunk/target/linux/modules/pwm/core.c
Modified: trunk/target/linux/modules/pwm/core.c
===================================================================
--- trunk/target/linux/modules/pwm/core.c 2007-02-04 21:18:10 UTC (rev 567)
+++ trunk/target/linux/modules/pwm/core.c 2007-02-04 21:56:25 UTC (rev 568)
@@ -72,7 +72,7 @@
#define PWM_TEST
#define DRIVER_NAME "imx-pwm"
-#define DRIVER_VERSION "0.3"
+#define DRIVER_VERSION "0.4"
#define DEV_IRQ_NAME DRIVER_NAME
#define DEV_IRQ_ID DRIVER_NAME
@@ -424,7 +424,9 @@
// Software reset
PWMC |= PWMC_SWR;
- udelay(1);
+ udelay(10);
+ // Activate & de-activate PWM (seems to be necessary after a reset)
+ PWMC |= PWMC_EN; PWMC &= ~PWMC_EN;
// Enable interrupt
//PWMC |= PWMC_IRQEN;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-02-04 21:18:11
|
Revision: 567
http://armadeus.svn.sourceforge.net/armadeus/?rev=567&view=rev
Author: artemys
Date: 2007-02-04 13:18:10 -0800 (Sun, 04 Feb 2007)
Log Message:
-----------
[LINUX] Some corrections to PWM driver:
* init problem
* frequency not returned correctly when doing a "cat"
* misc. code beautifying ;-)
Modified Paths:
--------------
trunk/target/linux/modules/pwm/core.c
Modified: trunk/target/linux/modules/pwm/core.c
===================================================================
--- trunk/target/linux/modules/pwm/core.c 2007-01-31 15:21:40 UTC (rev 566)
+++ trunk/target/linux/modules/pwm/core.c 2007-02-04 21:18:10 UTC (rev 567)
@@ -61,10 +61,9 @@
#include <asm/irq.h>
#include <asm/arch/hardware.h>
#include <asm/arch/irqs.h>
-
// For register adresses
#include <asm/arch/imx-regs.h>
-#define PWMC_PRESCALER_MASK (0x7F << 8) // not define in imx-regs ?
+#define PWMC_PRESCALER_MASK (0x7F << 8) // not defined in imx-regs ?
//
#include <linux/platform_device.h>
@@ -78,10 +77,6 @@
#define DEV_IRQ_NAME DRIVER_NAME
#define DEV_IRQ_ID DRIVER_NAME
-// #define MAX_ID 0x14
-//
-// #define _reg(REG) (*((volatile unsigned long *)(REG)))
-
//#define PK(fmt, args...) printk(fmt, ## args)
#define PK(...)
@@ -129,10 +124,10 @@
typedef struct timerStruct
{
timer_blk_t *timer_blk_ptr;
- int period;
- void (*timer_func)(unsigned long);
- int stop_flag;
-}PWM_Timer_t;
+ int period;
+ void (*timer_func)(unsigned long);
+ int stop_flag;
+} PWM_Timer_t;
static PWM_Timer_t pwmTimer;
static timer_blk_t timer_blk;
@@ -220,15 +215,20 @@
if (ppd->entry == NULL)
return; /* do nothing, not fully configured yet */
- // Setup prescaler
- pr_debug("Updating PWM registers\n");
- PWMC = (PWMC & ~PWMC_PRESCALER_MASK) | PWMC_PRESCALER(ppd->entry->prescaler) /*| PWMC_REPEAT(3)*/;
+ if (ppd->active)
+ {
+ // Activate PWM
+ PWMC |= PWMC_EN;
- // Setup period
- PWMP = PWMP_PERIOD(ppd->entry->period);
-
- // Setup duty
- PWMS = PWMS_SAMPLE( (u32) ((ppd->entry->period * ppd->duty) / 1000) );
+ // Setup prescaler
+ pr_debug("Updating PWM registers\n");
+ PWMC = (PWMC & ~PWMC_PRESCALER_MASK) | PWMC_PRESCALER(ppd->entry->prescaler) /*| PWMC_REPEAT(3)*/;
+
+ // Setup period
+ PWMP = PWMP_PERIOD(ppd->entry->period);
+
+ // Setup duty
+ PWMS = PWMS_SAMPLE( (u32) ((ppd->entry->period * ppd->duty) / 1000) );
/* unsigned duty;
if (ppd->duty == MAX_DUTY)
@@ -237,12 +237,10 @@
duty=((ppd->entry->max_period_val-1)*ppd->duty)/MAX_DUTY;
*/
- if (ppd->active)
- {
- PWMC |= PWMC_EN;
}
else
{
+ // De-activate
PWMC &= ~PWMC_EN;
}
}
@@ -363,7 +361,7 @@
PK("<1>PWMC = 0x%8x\n", (u32)PWMC);
}
-static void pwmIntFunc(void)
+static void pwmIntFunc( unsigned long unused)
{
u32 period;
@@ -754,9 +752,9 @@
struct pwm_device *ppd=to_pwm_device(dev);
if (ppd->entry) /* already initialized? */
- ret_size=sprintf(buf,"%ld",ppd->entry->period);
+ ret_size=sprintf(buf,"%ld",ppd->entry->period);
else
- ret_size=sprintf(buf,"0");
+ ret_size=sprintf(buf,"0");
return ret_size;
}
@@ -796,7 +794,7 @@
value = simple_strtol(buf, NULL, 10);
if ((value < PWM_MIN_PERIOD) && (value > PWM_MAX_PERIOD))
- return -EIO;
+ return -EIO;
/* for( i=0; i<ARRAY_SIZE(pwm_table); i++ )
{
@@ -831,7 +829,7 @@
struct pwm_device *ppd=to_pwm_device(dev);
if (ppd->entry)
- ret_size = sprintf( buf,"%ld", (u32) 1/(ppd->entry->period) );
+ ret_size = sprintf( buf,"%ld", (u32) 1000000/(ppd->entry->period) );
else
ret_size = sprintf(buf,"0");
@@ -901,9 +899,9 @@
value = simple_strtol(buf, NULL, 10);
if (value != 0)
- ppd->active=1;
+ ppd->active=1;
else
- ppd->active=0;
+ ppd->active=0;
setup_pwm_unit(ppd);
@@ -1072,7 +1070,7 @@
}
/**
- * pxa27x_pwm_drv_probe - claim resources
+ * imx_pwm_drv_probe - claim resources
* @pdev: platform device to work with
*
* CAUTION: This functions rejects a PWM unit if its
@@ -1127,7 +1125,7 @@
}
/**
- * pxa27x_pwm_drv_remove - free claimed resources
+ * imx_pwm_drv_remove - free claimed resources
* @pdev: platform device to work with
*/
static int imx_pwm_drv_remove (struct platform_device *pdev)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-31 15:22:18
|
Revision: 566
http://armadeus.svn.sourceforge.net/armadeus/?rev=566&view=rev
Author: artemys
Date: 2007-01-31 07:21:40 -0800 (Wed, 31 Jan 2007)
Log Message:
-----------
[BUILDROOT] Patch to correct strace bug on ARM (strace is sometimes useful ;-) )
Added Paths:
-----------
trunk/patches/013-buildroot-strace-arm-support.diff
Added: trunk/patches/013-buildroot-strace-arm-support.diff
===================================================================
--- trunk/patches/013-buildroot-strace-arm-support.diff (rev 0)
+++ trunk/patches/013-buildroot-strace-arm-support.diff 2007-01-31 15:21:40 UTC (rev 566)
@@ -0,0 +1,22 @@
+diff -urN -X ../../../dontdiff buildroot.org/package/strace/strace-fix-arm-bad-syscall.patch buildroot/package/strace/strace-fix-arm-bad-syscall.patch
+--- buildroot.org/package/strace/strace-fix-arm-bad-syscall.patch 1970-01-01 01:00:00.000000000 +0100
++++ buildroot/package/strace/strace-fix-arm-bad-syscall.patch 2007-01-18 16:31:06.000000000 +0100
+@@ -0,0 +1,18 @@
++--- strace-4.5.12-orig/syscall.c 2005-06-08 21:45:28.000000000 +0100
+++++ strace-4.5.12/syscall.c 2005-10-25 19:26:39.000000000 +0100
++@@ -1013,6 +1013,15 @@ struct tcb *tcp;
++ /*
++ * Note: we only deal with only 32-bit CPUs here.
++ */
+++
+++ if (!(tcp->flags & TCB_INSYSCALL) &&
+++ (tcp->flags & TCB_WAITEXECVE)) {
+++ /* caught a fake syscall from the execve's exit */
+++ tcp->flags &= ~TCB_WAITEXECVE;
+++ return 0;
+++ }
+++
+++
++ if (regs.ARM_cpsr & 0x20) {
++ /*
++ * Get the Thumb-mode system call number
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-30 20:58:22
|
Revision: 565
http://armadeus.svn.sourceforge.net/armadeus/?rev=565&view=rev
Author: artemys
Date: 2007-01-30 12:56:05 -0800 (Tue, 30 Jan 2007)
Log Message:
-----------
[LINUX DRIVER] Activate duty cycle modification access in PWM driver
Modified Paths:
--------------
trunk/target/linux/modules/pwm/core.c
trunk/target/linux/modules/pwm/test/testpwm.sh
Modified: trunk/target/linux/modules/pwm/core.c
===================================================================
--- trunk/target/linux/modules/pwm/core.c 2007-01-30 20:49:22 UTC (rev 564)
+++ trunk/target/linux/modules/pwm/core.c 2007-01-30 20:56:05 UTC (rev 565)
@@ -228,12 +228,7 @@
PWMP = PWMP_PERIOD(ppd->entry->period);
// Setup duty
- PWMS = PWMS_SAMPLE( ppd->entry->period / 2 ); // Fixed to 0.5 for the moment
- //PWMS = PWMS_SAMPLE( (uint32) (ppd->entry->period * ppd->duty / 1000) );
-
- if (ppd->active)
- {
- PWMC |= PWMC_EN;
+ PWMS = PWMS_SAMPLE( (u32) ((ppd->entry->period * ppd->duty) / 1000) );
/* unsigned duty;
if (ppd->duty == MAX_DUTY)
@@ -241,6 +236,10 @@
else
duty=((ppd->entry->max_period_val-1)*ppd->duty)/MAX_DUTY;
*/
+
+ if (ppd->active)
+ {
+ PWMC |= PWMC_EN;
}
else
{
@@ -970,7 +969,7 @@
ppd->reg=address;
ppd->entry=NULL;
ppd->active=0;
- ppd->duty=0;
+ ppd->duty=500; // = 50.O%
rc = class_device_register(&ppd->class_dev);
if (unlikely(rc)) {
Modified: trunk/target/linux/modules/pwm/test/testpwm.sh
===================================================================
--- trunk/target/linux/modules/pwm/test/testpwm.sh 2007-01-30 20:49:22 UTC (rev 564)
+++ trunk/target/linux/modules/pwm/test/testpwm.sh 2007-01-30 20:56:05 UTC (rev 565)
@@ -7,17 +7,20 @@
SYS_DIR="/sys/class/pwm/pwm0/"
PERIOD="1000 2000 3000 4000 5000 6000 7000 8000 9000 10000"
FREQUENCY="100 200 300 400 500 600"
+DUTY="001 250 333 500 666 750 999"
echo "Starting PWM test"
echo 1 > $SYS_DIR/active
+#Test frequency setting
for freq in $FREQUENCY
do
echo $freq > $SYS_DIR/frequency
echo "Setting PWM to $freq Hz"
sleep 5
done
-
+
+#Test period setting
for period in $PERIOD
do
echo $period > $SYS_DIR/period
@@ -26,5 +29,14 @@
done
+#Test duty cycle setting @1kHz -> duty value = positive width signal value
+echo 1000 > $SYS_DIR/frequency
+for duty in $DUTY
+do
+ echo $duty > $SYS_DIR/duty
+ echo "Setting duty cycle to $duty/1000 "
+ sleep 5
+done
+
echo 0 > $SYS_DIR/active
echo "End of PWM test"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-01-30 20:49:25
|
Revision: 564
http://armadeus.svn.sourceforge.net/armadeus/?rev=564&view=rev
Author: thom25
Date: 2007-01-30 12:49:22 -0800 (Tue, 30 Jan 2007)
Log Message:
-----------
add test to detect if a node is already here
Modified Paths:
--------------
trunk/target/linux/modules/fpga_devtools/fpgaloader.sh
Modified: trunk/target/linux/modules/fpga_devtools/fpgaloader.sh
===================================================================
--- trunk/target/linux/modules/fpga_devtools/fpgaloader.sh 2007-01-30 18:51:30 UTC (rev 563)
+++ trunk/target/linux/modules/fpga_devtools/fpgaloader.sh 2007-01-30 20:49:22 UTC (rev 564)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
# Load FPGA main module
modprobe fpgaloader fpga_descriptor=0
@@ -6,5 +6,6 @@
mkdir -p /dev/fpga
# For general usage
-mknod /dev/fpga/fpgaloader c $FPGA_MAJOR 0
-
+if [ ! -e /dev/fpga/fpgaloader ] ; then
+ mknod /dev/fpga/fpgaloader c $FPGA_MAJOR 0
+fi
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-01-30 18:51:31
|
Revision: 563
http://armadeus.svn.sourceforge.net/armadeus/?rev=563&view=rev
Author: thom25
Date: 2007-01-30 10:51:30 -0800 (Tue, 30 Jan 2007)
Log Message:
-----------
fix bug with script. simplify with modprobe
rename driver parameter
Modified Paths:
--------------
trunk/target/linux/modules/fpga_devtools/fpga-loader.c
trunk/target/linux/modules/fpga_devtools/fpgaloader.sh
Modified: trunk/target/linux/modules/fpga_devtools/fpga-loader.c
===================================================================
--- trunk/target/linux/modules/fpga_devtools/fpga-loader.c 2007-01-29 22:16:16 UTC (rev 562)
+++ trunk/target/linux/modules/fpga_devtools/fpga-loader.c 2007-01-30 18:51:30 UTC (rev 563)
@@ -5,25 +5,25 @@
* Julien Boibessot <jul...@ar...>
* Nicolas Colombain <nic...@ar...>
* Generic Xilinx FPGA loader
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- **********************************************************************
- */
-#include "fpga-loader.h"
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **********************************************************************
+ */
+#include "fpga-loader.h"
#include "xilinx-fpga-loader.h"
-#include <asm/arch/imx-regs.h>
+#include <asm/arch/imx-regs.h>
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
@@ -38,85 +38,85 @@
#include <asm/io.h>
#include <asm/uaccess.h>
-//static unsigned long init_map;
-struct semaphore fpga_sema;
+//static unsigned long init_map;
+struct semaphore fpga_sema;
-/* global variables */
+/* global variables */
static int fpga_major = FPGA_MAJOR;
-Xilinx_desc* g_current_desc = NULL;
-
-static unsigned char g_desc = 0; // use default target_fpga_desc
-module_param( g_desc, byte, 0 );
-
-#define FPGA_BUFFER_SIZE 4096
-static unsigned char g_buffer[FPGA_BUFFER_SIZE];
-static unsigned char g_nb_users = 0;
+Xilinx_desc* g_current_desc = NULL;
-
-void __exit armadeus_fpga_cleanup(void);
+static unsigned char fpga_descriptor = 0; // use default target_fpga_desc
+module_param( fpga_descriptor, byte, 0 );
-
-//------------------------------------------------
-//
-// Handles write() done on /dev/fpgaxx
-//
-static ssize_t armadeus_fpga_write(struct file *file, const char* pData, size_t count, loff_t *f_pos)
-{
- ssize_t ret = 0;
+#define FPGA_BUFFER_SIZE 4096
+static unsigned char g_buffer[FPGA_BUFFER_SIZE];
+static unsigned char g_nb_users = 0;
+
+
+void __exit armadeus_fpga_cleanup(void);
+
+
+//------------------------------------------------
+//
+// Handles write() done on /dev/fpgaxx
+//
+static ssize_t armadeus_fpga_write(struct file *file, const char* pData, size_t count, loff_t *f_pos)
+{
+ ssize_t ret = 0;
- // Get exclusive access
- if (down_interruptible(&fpga_sema))
- return -ERESTARTSYS;
-
- if( count > FPGA_BUFFER_SIZE ) {
- count = FPGA_BUFFER_SIZE;
+ // Get exclusive access
+ if (down_interruptible(&fpga_sema))
+ return -ERESTARTSYS;
+
+ if( count > FPGA_BUFFER_SIZE ) {
+ count = FPGA_BUFFER_SIZE;
}
- // Get value to write from user space
- ret = __copy_from_user( g_buffer, pData, count);
- if (ret != 0) {
- ret = -EFAULT;
- goto out;
+ // Get value to write from user space
+ ret = __copy_from_user( g_buffer, pData, count);
+ if (ret != 0) {
+ ret = -EFAULT;
+ goto out;
}
ret = xilinx_load( g_current_desc, g_buffer, count );
-out:
- // Release exclusive access
- up(&fpga_sema);
-
- return( ret );
-}
-
-static int armadeus_fpga_open(struct inode *inode, struct file *file)
+out:
+ // Release exclusive access
+ up(&fpga_sema);
+
+ return( ret );
+}
+
+static int armadeus_fpga_open(struct inode *inode, struct file *file)
{
- int ret;
-
- // Only one access at a time is permitted
- if( g_nb_users > 0 )
- return( -EBUSY );
-
- g_nb_users++;
+ int ret;
+
+ // Only one access at a time is permitted
+ if( g_nb_users > 0 )
+ return( -EBUSY );
+
+ g_nb_users++;
ret = xilinx_init_load( g_current_desc );
- PRINTF("Opening /dev/fpga/loader%d file, %d %d\n", MINOR(inode->i_rdev), g_desc, ret);
- return ret;
-}
-
-static int armadeus_fpga_release(struct inode *inode, struct file *file)
-{
+ PRINTF("Opening /dev/fpga/loader%d file, %d %d\n", MINOR(inode->i_rdev), fpga_descriptor, ret);
+ return ret;
+}
+
+static int armadeus_fpga_release(struct inode *inode, struct file *file)
+{
if( g_nb_users > 0 )
g_nb_users--;
- PRINTF("Closing access to /dev/fpga/loader%d\n", MINOR(inode->i_rdev));
- return 0;
-}
-
-//------------------------------------------------
-// PROC file
-//
-static int procfile_fpga_read( char *buffer, __attribute__ ((unused)) char **start, off_t offset, int buffer_length, int *eof, __attribute__ ((unused)) void* data)
-{
+ PRINTF("Closing access to /dev/fpga/loader%d\n", MINOR(inode->i_rdev));
+ return 0;
+}
+
+//------------------------------------------------
+// PROC file
+//
+static int procfile_fpga_read( char *buffer, __attribute__ ((unused)) char **start, off_t offset, int buffer_length, int *eof, __attribute__ ((unused)) void* data)
+{
int ret;
// We give all of our information in one go, so if the user asks us if we have more information the answer should always be no.
@@ -134,20 +134,20 @@
}
}
- return ret;
-}
-
-
-static int procfile_fpga_write( __attribute__ ((unused)) struct file *file, const char *buf, unsigned long count, void *data)
-{
- return count;
-}
-
-//------------------------------------------------
-// Handling of IOCTL calls
-//
-int armadeus_fpga_ioctl( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg )
-{
+ return ret;
+}
+
+
+static int procfile_fpga_write( __attribute__ ((unused)) struct file *file, const char *buf, unsigned long count, void *data)
+{
+ return count;
+}
+
+//------------------------------------------------
+// Handling of IOCTL calls
+//
+int armadeus_fpga_ioctl( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg )
+{
int err = 0; int ret = 0;
unsigned int minor;
@@ -185,97 +185,97 @@
up(&fpga_sema);
return ret;
-}
-
-//
-// Create /proc entries for direct access (with echo/cat) to GPIOs config
-//
-static int createProcEntries( void )
-{
- static struct proc_dir_entry *fpga_Proc_File;
+}
- // Create main directory
- proc_mkdir(FPGA_PROC_DIRNAME, NULL);
- // Create proc file to handle GPIO values
- fpga_Proc_File = create_proc_entry( FPGA_PROC_FILENAME, S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, NULL );
-
- if( fpga_Proc_File == NULL )
- {
- printk(FPGA_DRIVER_NAME ": Could not register a" FPGA_PROC_FILENAME ". Terminating\n");
- armadeus_fpga_cleanup();
- return -ENOMEM;
- }
- else
- {
- fpga_Proc_File->read_proc = procfile_fpga_read;
- fpga_Proc_File->write_proc = procfile_fpga_write;
- }
-
- return(0);
-}
-
-static struct file_operations fpga_fops = {
- .owner = THIS_MODULE,
- .write = armadeus_fpga_write,
-// .read = armadeus_fpga_read,
- .open = armadeus_fpga_open,
- .release = armadeus_fpga_release,
- .ioctl = armadeus_fpga_ioctl,
-};
-
-//
-// Module's initialization function
-//
-int __init armadeus_fpga_init(void)
-{
- static int result;
-
- // Register the driver by getting a major number
- result = register_chrdev(fpga_major, FPGA_DRIVER_NAME, &fpga_fops);
- if (result < 0)
- {
- printk(KERN_WARNING FPGA_DRIVER_NAME ": can't get major %d\n", fpga_major);
- return result;
- }
- if( fpga_major == 0 ) fpga_major = result; // dynamic Major allocation
-
- // Creating /proc entries
- result = createProcEntries();
- if( result < 0 ) return( result );
-
- // Initialise FPGA semaphore
- sema_init(&fpga_sema, 1);
+//
+// Create /proc entries for direct access (with echo/cat) to GPIOs config
+//
+static int createProcEntries( void )
+{
+ static struct proc_dir_entry *fpga_Proc_File;
+
+ // Create main directory
+ proc_mkdir(FPGA_PROC_DIRNAME, NULL);
+ // Create proc file to handle GPIO values
+ fpga_Proc_File = create_proc_entry( FPGA_PROC_FILENAME, S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, NULL );
+
+ if( fpga_Proc_File == NULL )
+ {
+ printk(FPGA_DRIVER_NAME ": Could not register a" FPGA_PROC_FILENAME ". Terminating\n");
+ armadeus_fpga_cleanup();
+ return -ENOMEM;
+ }
+ else
+ {
+ fpga_Proc_File->read_proc = procfile_fpga_read;
+ fpga_Proc_File->write_proc = procfile_fpga_write;
+ }
+
+ return(0);
+}
+
+static struct file_operations fpga_fops = {
+ .owner = THIS_MODULE,
+ .write = armadeus_fpga_write,
+// .read = armadeus_fpga_read,
+ .open = armadeus_fpga_open,
+ .release = armadeus_fpga_release,
+ .ioctl = armadeus_fpga_ioctl,
+};
+
+//
+// Module's initialization function
+//
+int __init armadeus_fpga_init(void)
+{
+ static int result;
+
+ // Register the driver by getting a major number
+ result = register_chrdev(fpga_major, FPGA_DRIVER_NAME, &fpga_fops);
+ if (result < 0)
+ {
+ printk(KERN_WARNING FPGA_DRIVER_NAME ": can't get major %d\n", fpga_major);
+ return result;
+ }
+ if( fpga_major == 0 ) fpga_major = result; // dynamic Major allocation
+
+ // Creating /proc entries
+ result = createProcEntries();
+ if( result < 0 ) return( result );
+ // Initialise FPGA semaphore
+ sema_init(&fpga_sema, 1);
+
// initialize the current fpga descriptor with the one by default
- g_current_desc = xilinx_get_descriptor(g_desc);
+ g_current_desc = xilinx_get_descriptor(fpga_descriptor);
if( g_current_desc == NULL ){
return -EINVAL;
}
-
- printk(FPGA_DRIVER_NAME " module " FPGA_DRIVER_VERSION " successfully loaded !\n");
- return(0);
-}
-
-//
-// Module's cleanup function
-//
-void __exit armadeus_fpga_cleanup(void)
-{
- PRINTF("Removing " FPGA_DRIVER_NAME " module: ");
-
- // Remove /proc entries
- remove_proc_entry(FPGA_PROC_FILENAME, NULL);
- // De-register /dev interface
- unregister_chrdev(fpga_major, FPGA_DRIVER_NAME);
-
- PRINTF("Ok !\n ");
-}
-
-//------------------------------------------------
-
-module_init(armadeus_fpga_init);
-module_exit(armadeus_fpga_cleanup);
-
-MODULE_AUTHOR("JB / NC");
-MODULE_DESCRIPTION("Armadeus fpga's loading driver");
-MODULE_LICENSE("GPL");
+
+ printk(FPGA_DRIVER_NAME " module " FPGA_DRIVER_VERSION " successfully loaded !\n");
+ return(0);
+}
+
+//
+// Module's cleanup function
+//
+void __exit armadeus_fpga_cleanup(void)
+{
+ PRINTF("Removing " FPGA_DRIVER_NAME " module: ");
+
+ // Remove /proc entries
+ remove_proc_entry(FPGA_PROC_FILENAME, NULL);
+ // De-register /dev interface
+ unregister_chrdev(fpga_major, FPGA_DRIVER_NAME);
+
+ PRINTF("Ok !\n ");
+}
+
+//------------------------------------------------
+
+module_init(armadeus_fpga_init);
+module_exit(armadeus_fpga_cleanup);
+
+MODULE_AUTHOR("JB / NC");
+MODULE_DESCRIPTION("Armadeus fpga's loading driver");
+MODULE_LICENSE("GPL");
Modified: trunk/target/linux/modules/fpga_devtools/fpgaloader.sh
===================================================================
--- trunk/target/linux/modules/fpga_devtools/fpgaloader.sh 2007-01-29 22:16:16 UTC (rev 562)
+++ trunk/target/linux/modules/fpga_devtools/fpgaloader.sh 2007-01-30 18:51:30 UTC (rev 563)
@@ -1,19 +1,6 @@
#!/bin/bash
-
-#
-# This script will load Armadeus gpio modules
-#
-
-if [ -d "$1" ]; then
- FPGA_MODULES_DIR="$1"
-else
- KERNEL_VERSION=`uname -r`
- FPGA_MODULES_DIR="/lib/modules/$KERNEL_VERSION/extra/fpga_devtools"
- echo "Using $FPGA_MODULES_DIR as default modules dir as no param was passed"
-fi
-
# Load FPGA main module
-insmod $FPGA_MODULES_DIR/fpgaloader.ko 0
+modprobe fpgaloader fpga_descriptor=0
FPGA_MAJOR=`cat /proc/devices | grep fpgaloader | cut -d " " -f 1`
mkdir -p /dev/fpga
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2007-01-29 22:16:23
|
Revision: 562
http://armadeus.svn.sourceforge.net/armadeus/?rev=562&view=rev
Author: jorasse
Date: 2007-01-29 14:16:16 -0800 (Mon, 29 Jan 2007)
Log Message:
-----------
Fix root_fs length to fill the 8MB of flash. change kernel command line according this new value.
remove risque of rootfs corruption.
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/u-boot/100-apx9328.patch
Modified: trunk/buildroot/target/device/armadeus/u-boot/100-apx9328.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/u-boot/100-apx9328.patch 2007-01-28 17:55:52 UTC (rev 561)
+++ trunk/buildroot/target/device/armadeus/u-boot/100-apx9328.patch 2007-01-29 22:16:16 UTC (rev 562)
@@ -1393,7 +1393,7 @@
+#define CONFIG_CONSOLE "console=ttySMX0,"MK_STR(CONFIG_BAUDRATE)"n8"
+#define CONFIG_MTDMAP "apf9328_flash"
+#define CONFIG_MTDPARTS "mtdparts=" CONFIG_MTDMAP ":256k(U-boot)ro," \
-+ "128k(U-boot_env),256k(firmware),1536k(kernel),-(root)"
++ "128k(U-boot_env),256k(firmware),1536k(kernel),6016k(root)"
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "fileaddr=" MK_STR(CFG_LOAD_ADDR) "\0" \
@@ -1686,7 +1686,7 @@
+#define CONFIG_KERNEL_ADDR 0x100A0000
+#define CONFIG_KERNEL_LEN 0x00180000 /* 1.5MB */
+#define CONFIG_ROOTFS_ADDR 0x10220000
-+#define CONFIG_ROOTFS_LEN 0x00580000 /* 5.5MB */
++#define CONFIG_ROOTFS_LEN 0x005E0000 /* almost 6MB */
+
+/*
+ * Default load address for user programs and kernel
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-01-28 17:55:56
|
Revision: 561
http://armadeus.svn.sourceforge.net/armadeus/?rev=561&view=rev
Author: thom25
Date: 2007-01-28 09:55:52 -0800 (Sun, 28 Jan 2007)
Log Message:
-----------
add install script
rename driver linux name
Modified Paths:
--------------
trunk/target/linux/modules/fpga_devtools/fpga-loader.h
Added Paths:
-----------
trunk/target/linux/modules/fpga_devtools/fpgaloader.sh
Modified: trunk/target/linux/modules/fpga_devtools/fpga-loader.h
===================================================================
--- trunk/target/linux/modules/fpga_devtools/fpga-loader.h 2007-01-27 22:06:11 UTC (rev 560)
+++ trunk/target/linux/modules/fpga_devtools/fpga-loader.h 2007-01-28 17:55:52 UTC (rev 561)
@@ -29,7 +29,7 @@
#define FPGA_PROC_FILENAME FPGA_PROC_DIRNAME "/loader"
#define FPGA_DRIVER_VERSION "v0.0.6"
-#define FPGA_DRIVER_NAME "Armadeus fpga loader"
+#define FPGA_DRIVER_NAME "fpgaloader"
// By default, we use dynamic allocation of major numbers
#define FPGA_MAJOR 0
Added: trunk/target/linux/modules/fpga_devtools/fpgaloader.sh
===================================================================
--- trunk/target/linux/modules/fpga_devtools/fpgaloader.sh (rev 0)
+++ trunk/target/linux/modules/fpga_devtools/fpgaloader.sh 2007-01-28 17:55:52 UTC (rev 561)
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+#
+# This script will load Armadeus gpio modules
+#
+
+if [ -d "$1" ]; then
+ FPGA_MODULES_DIR="$1"
+else
+ KERNEL_VERSION=`uname -r`
+ FPGA_MODULES_DIR="/lib/modules/$KERNEL_VERSION/extra/fpga_devtools"
+ echo "Using $FPGA_MODULES_DIR as default modules dir as no param was passed"
+fi
+
+# Load FPGA main module
+insmod $FPGA_MODULES_DIR/fpgaloader.ko 0
+
+FPGA_MAJOR=`cat /proc/devices | grep fpgaloader | cut -d " " -f 1`
+mkdir -p /dev/fpga
+
+# For general usage
+mknod /dev/fpga/fpgaloader c $FPGA_MAJOR 0
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-27 22:06:11
|
Revision: 560
http://armadeus.svn.sourceforge.net/armadeus/?rev=560&view=rev
Author: artemys
Date: 2007-01-27 14:06:11 -0800 (Sat, 27 Jan 2007)
Log Message:
-----------
[LINUX DRIVER] Make GPIO driver loading script independant of Linux kernel version
Modified Paths:
--------------
trunk/target/linux/modules/gpio/loadgpio.sh
Modified: trunk/target/linux/modules/gpio/loadgpio.sh
===================================================================
--- trunk/target/linux/modules/gpio/loadgpio.sh 2007-01-27 21:38:13 UTC (rev 559)
+++ trunk/target/linux/modules/gpio/loadgpio.sh 2007-01-27 22:06:11 UTC (rev 560)
@@ -7,7 +7,8 @@
if [ -d "$1" ]; then
GPIO_MODULES_DIR="$1"
else
- GPIO_MODULES_DIR="/lib/modules/2.6.12/kernel"
+ KERNEL_VERSION=`uname -r`
+ GPIO_MODULES_DIR="/lib/modules/$KERNEL_VERSION/extra/gpio/"
echo "Using $GPIO_MODULES_DIR as default modules dir as no param was passed"
fi
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-27 21:38:14
|
Revision: 559
http://armadeus.svn.sourceforge.net/armadeus/?rev=559&view=rev
Author: artemys
Date: 2007-01-27 13:38:13 -0800 (Sat, 27 Jan 2007)
Log Message:
-----------
[LINUX DRIVERS] Prevent FPGA loader driver from being generated for each build, even if we don't want to use it ;-)
Modified Paths:
--------------
trunk/target/linux/modules/fpga_devtools/Kconfig
trunk/target/linux/modules/fpga_devtools/Makefile
Modified: trunk/target/linux/modules/fpga_devtools/Kconfig
===================================================================
--- trunk/target/linux/modules/fpga_devtools/Kconfig 2007-01-27 15:51:21 UTC (rev 558)
+++ trunk/target/linux/modules/fpga_devtools/Kconfig 2007-01-27 21:38:13 UTC (rev 559)
@@ -2,7 +2,7 @@
#
config ARMADEUS_FPGA_TOOL_DRIVER
- boolean "Armadeus FPGA configuration driver"
+ tristate "Armadeus FPGA configuration driver"
default n
depends on ARMADEUS_DRIVERS
---help---
Modified: trunk/target/linux/modules/fpga_devtools/Makefile
===================================================================
--- trunk/target/linux/modules/fpga_devtools/Makefile 2007-01-27 15:51:21 UTC (rev 558)
+++ trunk/target/linux/modules/fpga_devtools/Makefile 2007-01-27 21:38:13 UTC (rev 559)
@@ -1,13 +1,13 @@
#
-# Makefile for the Armadeus GPIO drivers
+# Makefile for the Armadeus FPGA loader driver
# PATH=$HOME/nico/test/buildroot/build_arm_nofpu/staging_dir/bin:$PATH
# make ARCH=arm
-# tftp -gr fpgaloader.ko -l /lib/modules/drivers/fpgaloader.ko 192.168.0.3
-# tftp -gr fpga_test.bit 192.168.0.3
-# insmod /lib/modules/drivers/fpgaloader.ko
-# dd if=fpga_test.bit of=/dev/fpga/loader
-
+# tftp -gr fpgaloader.ko -l /lib/modules/drivers/fpgaloader.ko 192.168.0.3
+# tftp -gr fpga_test.bit 192.168.0.3
+# insmod /lib/modules/drivers/fpgaloader.ko
+# dd if=fpga_test.bit of=/dev/fpga/loader
+
BASE_DIR="../../../../buildroot/"
REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
@@ -18,15 +18,13 @@
ifneq ($(KERNELRELEASE),)
-obj-m += fpgaloader.o
+obj-$(CONFIG_ARMADEUS_FPGA_TOOL_DRIVER) += fpgaloader.o
fpgaloader-objs := target-fpga-loader.o xilinx-fpga-loader.o fpga-loader.o
-
+
else
-#KDIR := /lib/modules/$(shell uname -r)/build
-#KDIR := /lib/modules/$(REL)/build
KDIR := $(ARMADEUS_KERNEL_DIR)
PWD := $(shell pwd)
-
+
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-27 15:51:21
|
Revision: 558
http://armadeus.svn.sourceforge.net/armadeus/?rev=558&view=rev
Author: artemys
Date: 2007-01-27 07:51:21 -0800 (Sat, 27 Jan 2007)
Log Message:
-----------
[LINUX] Improve margins for Sharp LCD and enhance dmacr declaration
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/021-linux-2.6.18-apf9328.diff
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/021-linux-2.6.18-apf9328.diff
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/021-linux-2.6.18-apf9328.diff 2007-01-27 15:48:22 UTC (rev 557)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.18.1/021-linux-2.6.18-apf9328.diff 2007-01-27 15:51:21 UTC (rev 558)
@@ -1187,7 +1187,7 @@
+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | PCR_FLMPOL | PCR_LPPOL |
+ PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(9),
+ .pwmr = 0, // No contrast management
-+ .dmacr = 0x80080004,
++ .dmacr = DMACR_BURST | DMACR_HM(8) | DMACR_TM(4),
+ .lcd_power = apf9328_lcd_power,
+};
+#elif CONFIG_FB_IMX_SHARP_LQ057_TFT
@@ -1200,14 +1200,14 @@
+ .hsync_len = 9,
+ .vsync_len = 2,
+ .left_margin = 9,
-+ .upper_margin = 2,
++ .upper_margin = 0,
+ .right_margin = 27,
-+ .lower_margin = 4,
++ .lower_margin = 7,
+
+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | /*PCR_CLKPOL |*/
+ PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(9),
+ .pwmr = 0, // No contrast management
-+ .dmacr = 0X80080004,
++ .dmacr = DMACR_BURST | DMACR_HM(8) | DMACR_TM(4),
+ .lcd_power = apf9328_lcd_power,
+};
+#elif CONFIG_FB_IMX_OPTREX_F51900_CSTN
@@ -1225,7 +1225,7 @@
+ .lower_margin = 2,
+
+ .pcr = PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_8 | PCR_ACD(5) | PCR_END_BYTE_SWAP | PCR_PCD(3),
-+ .dmacr = 0X80080004,
++ .dmacr = DMACR_BURST | DMACR_HM(8) | DMACR_TM(4),
+ .lcd_power = apf9328_lcd_power,
+};
+#elif CONFIG_FB_IMX_MOTOROLA_A910_TFT
@@ -1243,7 +1243,7 @@
+ .lower_margin = 4,
+
+ .pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | PCR_CLKPOL | PCR_SCLKIDLE | PCR_SCLK_SEL | PCR_PCD(9),
-+ .dmacr = 0X80080004,
++ .dmacr = DMACR_BURST | DMACR_HM(8) | DMACR_TM(4),
+ .pwmr = 0, // No contrast management
+ .lcd_power = apf9328_lcd_power,
+};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-27 15:48:21
|
Revision: 557
http://armadeus.svn.sourceforge.net/armadeus/?rev=557&view=rev
Author: artemys
Date: 2007-01-27 07:48:22 -0800 (Sat, 27 Jan 2007)
Log Message:
-----------
[LINUX DRIVERS] Remove debug message in PWM driver
Modified Paths:
--------------
trunk/target/linux/modules/pwm/core.c
Modified: trunk/target/linux/modules/pwm/core.c
===================================================================
--- trunk/target/linux/modules/pwm/core.c 2007-01-27 15:47:09 UTC (rev 556)
+++ trunk/target/linux/modules/pwm/core.c 2007-01-27 15:48:22 UTC (rev 557)
@@ -221,7 +221,7 @@
return; /* do nothing, not fully configured yet */
// Setup prescaler
- printk("Updating PWM registers\n");
+ pr_debug("Updating PWM registers\n");
PWMC = (PWMC & ~PWMC_PRESCALER_MASK) | PWMC_PRESCALER(ppd->entry->prescaler) /*| PWMC_REPEAT(3)*/;
// Setup period
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-27 15:47:14
|
Revision: 556
http://armadeus.svn.sourceforge.net/armadeus/?rev=556&view=rev
Author: artemys
Date: 2007-01-27 07:47:09 -0800 (Sat, 27 Jan 2007)
Log Message:
-----------
[DEMOS] First working version (with sound) of Armanoid game (SDL Demonstration)
This game will be used in the article for Linux Magazine France
Modified Paths:
--------------
trunk/target/demos/armanoid/Makefile
trunk/target/demos/armanoid/armanoid.c
trunk/target/demos/armanoid/bar.bmp
Added Paths:
-----------
trunk/target/demos/armanoid/buzzer.c
trunk/target/demos/armanoid/buzzer.h
trunk/target/demos/armanoid/collide.c
trunk/target/demos/armanoid/collide.h
Modified: trunk/target/demos/armanoid/Makefile
===================================================================
--- trunk/target/demos/armanoid/Makefile 2007-01-26 13:49:18 UTC (rev 555)
+++ trunk/target/demos/armanoid/Makefile 2007-01-27 15:47:09 UTC (rev 556)
@@ -1,24 +1,46 @@
+ifeq ($(TARGET),arm)
INCLUDE_PATH="../../../buildroot/build_arm_nofpu/SDL-1.2.9/include/"
LIBRARY_PATH="../../../buildroot/build_arm_nofpu/root/usr/lib/"
INSTALL_DIR="../../../buildroot/build_arm_nofpu/root/usr/bin/"
+CC=arm-linux-gcc
+DEFINES=TARGET
+else
+INCLUDE_PATH="/usr/include/SDL"
+LIBRARY_PATH="/usr/lib/"
+INSTALL_DIR="."
+CC=gcc
+DEFINES=HOST
+endif
+CFLAGS="-g"
+
default: armanoid
-all: armanoid armanoidpc
+all: armanoid
-armanoid: armanoid.c
- arm-linux-g++ -I$(INCLUDE_PATH) -L$(LIBRARY_PATH) -o $@ $^ -lSDL
-armanoidpc: armanoid.c
- g++ -I/usr/include/SDL -o $@ $^ -lSDL
+armanoid.o: armanoid.c
+ $(CC) -I$(INCLUDE_PATH) $(CFLAGS) -c -o $@ $^
+collide.o: collide.c
+ $(CC) -I$(INCLUDE_PATH) $(CFLAGS) -c -o $@ $^
+
+#timer.o: timer.cpp
+# $(CC) -I$(INCLUDE_PATH) $(CFLAGS) -c -o $@ $^
+
+buzzer.o: buzzer.c
+ $(CC) -I$(INCLUDE_PATH) $(CFLAGS) -D$(DEFINES) -c -o $@ $^
+
+armanoid: armanoid.o collide.o buzzer.o
+ $(CC) -I$(INCLUDE_PATH) -L$(LIBRARY_PATH) -o $@ $^ -lSDL
+
install: armanoid
- cp armanoid $INSTALL_DIR
- cp ball.bmp $INSTALL_DIR
+ cp armanoid $INSTALL_DIR
+ cp ball.bmp $INSTALL_DIR
cp block.bmp $INSTALL_DIR
- cp bar.bmp $INSTALL_DIR
+ cp bar.bmp $INSTALL_DIR
clean:
- rm -rf armanoid armanoidpc
- rm -rf *.o
\ No newline at end of file
+ rm -rf armanoid
+ rm -rf *.o
Modified: trunk/target/demos/armanoid/armanoid.c
===================================================================
--- trunk/target/demos/armanoid/armanoid.c 2007-01-26 13:49:18 UTC (rev 555)
+++ trunk/target/demos/armanoid/armanoid.c 2007-01-27 15:47:09 UTC (rev 556)
@@ -1,3 +1,23 @@
+/*
+ *
+ * Small game to demonstrate how to use (or not use ;-) ) SDL library
+ * for the Armadeus project. www.armadeus.og
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> // for sleep()
@@ -3,11 +23,26 @@
#include "SDL.h"
+// For collision detection:
+#include "collide.h"
+// For timer handling (g++ only)
+//#include "timer.h"
+// To play sound:
+#include "buzzer.h"
+
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
+#ifdef DEBUG
+#define debug( args...) printf( ## args )
+#else
+#define debug( args...) do {;} while(0);
+#endif
+
+#define bool unsigned int
+#define false 0
+#define true 1
+
SDL_Surface *back;
-//SDL_Surface *image;
-SDL_Surface* bar;
SDL_Surface* block;
SDL_Surface *screen;
@@ -30,12 +65,13 @@
};
static struct sprite ball;
-//int xpos=0,ypos=0;
-int barxpos=SCREEN_WIDTH/2, barypos= SCREEN_HEIGHT-32;
+static struct sprite bar;
+
+static bool ball_isfree = false;
int remainingBlocks = 0;
-#define BLOCK_HORI_SIZE 32
-#define BLOCK_VERT_SIZE 24
+static int BLOCK_HORI_SIZE = 32;
+static int BLOCK_VERT_SIZE = 24;
#define BLOCK_SPACING 4
#define YOFFUP 24
@@ -44,19 +80,46 @@
#define MAX_HORI_BLOCKS ((SCREEN_WIDTH-XOFF*2)/(BLOCK_HORI_SIZE+BLOCK_SPACING))
#define MAX_VERT_BLOCKS ((SCREEN_HEIGHT-YOFFUP*2-YOFFDOWN)/(BLOCK_VERT_SIZE+BLOCK_SPACING))
+const int NB_FRAMES_PER_SECOND = 50;
-char blocks[MAX_HORI_BLOCKS][MAX_VERT_BLOCKS];
+char blocks[32][32];
-int loadImages()
+// Load an image from a filename to a sprite surface
+static int loadImage( struct sprite* aSprite, char* afilename )
{
int result = 0;
-
- //back = SDL_LoadBMP("./background.bmp");
- ball.pSurface = SDL_LoadBMP("./ball.bmp");
- bar = SDL_LoadBMP("./bar.bmp");
+ SDL_Surface* loadedImage = NULL;
+
+ loadedImage= SDL_LoadBMP( afilename );
+ if( loadedImage == NULL )
+ {
+ printf("Error while loading image: %s\n", afilename);
+ result = -1;
+ }
+ else
+ {
+ aSprite->pSurface = SDL_DisplayFormat( loadedImage );
+ SDL_FreeSurface( loadedImage );
+ aSprite->width = aSprite->pSurface->w;
+ aSprite->height = aSprite->pSurface->h;
+ }
+ return( result );
+}
+
+// Load all images needed by the game (from .bmp files)
+static int loadImages()
+{
+ int result = 0;
+
+ loadImage( &ball, "./ball.bmp");
+ loadImage( &bar, "./bar.bmp");
+
block = SDL_LoadBMP("./block.bmp");
- if( ball.pSurface == NULL || bar == NULL || block ==NULL )
+ BLOCK_HORI_SIZE = block->w;
+ BLOCK_VERT_SIZE = block->h;
+ // Check if we got all images
+ if( ball.pSurface == NULL || bar.pSurface == NULL || block ==NULL )
{
printf("Unable to load image files !\n");
result = -1;
@@ -72,37 +135,45 @@
{
printf("Error while setting transparent color\n");
}
+
+ bar.xpos=SCREEN_WIDTH/2; bar.ypos= SCREEN_HEIGHT-(bar.height*2);
}
return(result);
}
+static void freeRessources()
+{
+ SDL_FreeSurface( screen );
+ SDL_FreeSurface( ball.pSurface );
+ SDL_FreeSurface( bar.pSurface );
+ SDL_FreeSurface( block );
+}
+
void DrawIMG(SDL_Surface *img, int x, int y)
{
- SDL_Rect dest;
- dest.x = x;
- dest.y = y;
- SDL_BlitSurface(img, NULL, screen, &dest);
+ SDL_Rect dest;
+ dest.x = x;
+ dest.y = y;
+ SDL_BlitSurface(img, NULL, screen, &dest);
}
-void DrawIMG(SDL_Surface *img, int x, int y,
+void DrawIMGRect(SDL_Surface *img, int x, int y,
int w, int h, int x2, int y2)
{
- SDL_Rect dest;
- dest.x = x;
- dest.y = y;
- SDL_Rect dest2;
- dest2.x = x2;
- dest2.y = y2;
- dest2.w = w;
- dest2.h = h;
- SDL_BlitSurface(img, &dest2, screen, &dest);
+ SDL_Rect dest;
+ dest.x = x;
+ dest.y = y;
+ SDL_Rect dest2;
+ dest2.x = x2;
+ dest2.y = y2;
+ dest2.w = w;
+ dest2.h = h;
+ SDL_BlitSurface(img, &dest2, screen, &dest);
}
-void DrawBG()
+void drawBackground()
{
- //DrawIMG(back, 0, 0);
-
SDL_Rect dest;
dest.x = 0; dest.y = 0; dest.w = SCREEN_WIDTH; dest.h = SCREEN_HEIGHT;
// Fill background
@@ -139,13 +210,12 @@
}
}
-void DrawScene()
+void drawScene()
{
- //DrawIMG(back, xpos-2, ypos-2, 132, 132, xpos-2, ypos-2);
- DrawBG();
+ drawBackground();
drawBlocks();
DrawIMG(ball.pSurface, ball.xpos, ball.ypos);
- DrawIMG(bar, barxpos, barypos);
+ DrawIMG(bar.pSurface, bar.xpos, bar.ypos);
SDL_Flip(screen);
}
@@ -154,76 +224,121 @@
{
bool result = false;
- // Test pad collision
- Uint32 distance=0;
-/* distance = (ypos - barypos) * (ypos - barypos) + (xpos - barxpos) * (xpos - barxpos);
-
- if( distance <= 32 )
- result = true;
-*/
+// SDL_CollideBoundingBox(&ball , ball.xpos , ball.ypos ,
+// SDL_Surface *sb , int bx , int by)
+
Uint32 Xind, Yind;
- if( (ball.xpos + ball.xhot > XOFF) && (ball.ypos + ball.yhot > YOFFUP) )
+ if( (ball.xpos + ball.width > XOFF) && (ball.ypos + ball.height > YOFFUP) )
{
- if( (ball.xpos + ball.xhot < SCREEN_WIDTH - XOFF) && (ball.ypos + ball.yhot < SCREEN_HEIGHT - YOFFDOWN) )
+ if( (ball.xpos + ball.width < SCREEN_WIDTH - XOFF) && (ball.ypos + ball.height < SCREEN_HEIGHT - YOFFDOWN) )
{
Xind = (ball.xpos-XOFF) / (BLOCK_HORI_SIZE + BLOCK_SPACING);
Yind = (ball.ypos-YOFFUP) / (BLOCK_VERT_SIZE + BLOCK_SPACING);
if( (Xind < MAX_HORI_BLOCKS) && (Yind < MAX_VERT_BLOCKS) && (blocks[Xind][Yind] == 1) )
{
result = true;
- printf("Xpos: %d, Xind: %d, YPos %d, Yind %d \n", ball.xpos, Xind, ball.ypos, Yind);
+ debug("Xpos: %d, Xind: %d, YPos %d, Yind %d \n", ball.xpos, Xind, ball.ypos, Yind);
blocks[Xind][Yind] = 0;
+ if( (ball.xpos + ball.width / 2) < (XOFF + (Xind) * (BLOCK_HORI_SIZE + BLOCK_SPACING)) )
+ {
+ ball.xspeed = -(ball.xspeed);
+ debug("SideG coll\n");
+ }
+ else if( (ball.xpos + ball.width / 2) > (XOFF + (Xind+1) * (BLOCK_HORI_SIZE + BLOCK_SPACING)) )
+ {
+ ball.xspeed = -(ball.xspeed);
+ debug("SideD coll\n");
+ } else
+ ball.yspeed = -(ball.yspeed);
remainingBlocks--;
}
}
}
-// printf("Dist: %i\r", distance);
- return(result);
+
+ return( result );
}
bool hasBallCollidedBar(void)
{
bool result = false;
- if( (ball.xpos + ball.xhot >= barxpos) && (ball.xpos + ball.xhot <= (barxpos+64)) )
- if( (ball.ypos + ball.yhot >= barypos) && (ball.ypos + ball.yhot <= (barypos+16)) )
- result = true;
+// if( (ball.xpos + ball.xhot >= barxpos) && (ball.xpos + ball.xhot <= (barxpos+64)) )
+// if( (ball.ypos + ball.yhot >= barypos) && (ball.ypos + ball.yhot <= (barypos+16)) )
+// result = true;
+ if( SDL_CollideBoundingBox(ball.pSurface , ball.xpos , ball.ypos , bar.pSurface, bar.xpos , bar.ypos) )
+ result = true;
return(result);
}
+bool hasBallCollidedBarOnSide(void)
+{
+ bool result = false;
+
+ if( (ball.ypos > bar.ypos) && ( SDL_CollideBoundingBox(ball.pSurface , ball.xpos , ball.ypos , bar.pSurface, bar.xpos , bar.ypos) ) )
+ result = true;
+
+ return(result);
+}
+
+#define MAX_BAR_SPEED 10
int main(int argc, char *argv[])
{
Uint8* keys;
-
+ int nbFrames = 0;
+ //Timer fps, update;
//Sint8 xspeed = 1, yspeed =1;
- if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
+ // Initialize SDL
+ if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER /*| SDL_INIT_EVENTTHREAD |SDL_INIT_NOPARACHUTE*/) < 0 )
{
printf("Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
+ if (SDL_InitSubSystem(SDL_INIT_TIMER) == -1)
+ {
+ fprintf(stderr, "SDL timer failed to initialize! Error: %s\n", SDL_GetError());
+ exit(1);
+ }
+ else
+ {
+ fprintf(stdout, "SDL timer initialized properly!\n");
+ }
+ // Ask SDL to cleanup when exiting
atexit(SDL_Quit);
- screen=SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0/*SDL_HWSURFACE|SDL_DOUBLEBUF*/ );
- if ( screen == NULL )
+ // Get a screen to display our game
+ screen=SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0/*SDL_HWPALETTE*//*SDL_HWSURFACE|| SDL_DOUBLEBUF*/ );
+ if( screen == NULL )
{
printf("Unable to set %dx%dvideo mode: %s\n", SCREEN_WIDTH, SCREEN_HEIGHT, SDL_GetError());
exit(1);
}
+ // Load our graphics
if( loadImages() )
{
return(1);
}
- DrawBG();
+ drawBackground();
initBlocks();
+ // Initialize sound
+ if( initBuzzer() )
+ {
+ printf("Unable to find PWM on your system, sound won't be activated\n");
+ }
+
int done=0;
- printf("Calculated blocks number: Hori: %d, Vert: %d\n", MAX_HORI_BLOCKS, MAX_VERT_BLOCKS);
+ debug("Calculated blocks number: Hori: %d, Vert: %d\n", MAX_HORI_BLOCKS, MAX_VERT_BLOCKS);
- sleep(1);
+ // Hide mouse
SDL_ShowCursor(0);
+
+ /* // Start timer for Frame Rate calculation
+ update.start();
+ fps.start();*/
+
// Main loop
while(done == 0)
{
@@ -237,32 +352,79 @@
if ( event.key.keysym.sym == SDLK_ESCAPE ) { done = 1; }
}
}
- // Check user actions
+
+ bar.xpos += 1*(bar.xspeed/2);
+ if( bar.xspeed < 0 ) bar.xspeed++; else if( bar.xspeed > 0 ) bar.xspeed--;
+ if(bar.xpos < 0) bar.xpos = 0;
+ if( bar.xpos > (SCREEN_WIDTH-bar.width) ) bar.xpos = (SCREEN_WIDTH-bar.width);
+
+ // Check user actions and move pad
keys = SDL_GetKeyState(NULL);
/*if ( keys[SDLK_UP] ) { ball.ypos -= 1; }
if ( keys[SDLK_DOWN] ) { ball.ypos += 1; }*/
- if ( keys[SDLK_LEFT] ) { barxpos -= 2; if(barxpos < 0) barxpos = 0;}
- if ( keys[SDLK_RIGHT] ) { barxpos += 2; if( barxpos > (SCREEN_WIDTH-64) ) barxpos = (SCREEN_WIDTH-64);}
+ if ( keys[SDLK_LEFT] )
+ {
+ bar.xspeed -= 2; if( bar.xspeed <= -MAX_BAR_SPEED ) bar.xspeed = -MAX_BAR_SPEED;
+ }
+ if ( keys[SDLK_RIGHT] )
+ {
+ bar.xspeed += 2; if( bar.xspeed >= MAX_BAR_SPEED ) bar.xspeed = MAX_BAR_SPEED;
+ }
+ if ( keys[SDLK_SPACE] ) { ball_isfree = true; ball.yspeed = -1; }
+
// Move ball depending on speed
- ball.ypos += ball.yspeed;
- ball.xpos += ball.xspeed;
+ if( ball_isfree )
+ {
+ ball.ypos += ball.yspeed;
+ ball.xpos += ball.xspeed;
+ } else // or from the pad if captured
+ {
+ ball.ypos = bar.ypos - ball.height;
+ ball.xpos = bar.xpos + bar.width/2 - ball.width/2;
+ if( bar.xspeed > 0 )
+ ball.xspeed = 1;
+ else if( bar.xspeed < 0 )
+ ball.xspeed = -1;
+ }
// Check if ball will go out of playing area
- if( ball.xpos+ball.xhot >= SCREEN_WIDTH ) { ball.xspeed = -(ball.xspeed); printf("Xx: %i\n", ball.xspeed); ball.xhot = 0;}
- if( ball.ypos+ball.yhot >= SCREEN_HEIGHT ) { /*ball.yspeed = -(ball.yspeed); ball.yhot = 0;*/ printf("PERDU !\n"); done=1;}
- if ( ball.xpos+ball.xhot <= 0 ) { ball.xspeed = -(ball.xspeed); ball.xhot = ball.width; printf("Xx: %i\n", ball.xspeed); }
- if ( ball.ypos+ball.yhot <= 0 ) { ball.yspeed = -(ball.yspeed); ball.yhot = ball.height; printf("Yy: %i\n", ball.yspeed);}
+ if( ball.xpos + ball.width >= SCREEN_WIDTH ) { ball.xspeed = -(ball.xspeed); debug("Xx: %i\n", ball.xspeed); ball.xhot = 0;}
+ if( ball.ypos + ball.height >= SCREEN_HEIGHT ) { printf("PERDU !\n"); done=1;}
+ if( ball.xpos <= 0 ) { ball.xspeed = -(ball.xspeed); ball.xhot = ball.width; debug("Xx: %i\n", ball.xspeed); }
+ if( ball.ypos <= 0 ) { ball.yspeed = -(ball.yspeed); ball.yhot = ball.height; debug("Yy: %i\n", ball.yspeed);}
// Check if ball has collided with an other object
- if( hasBallCollidedBar() ) { ball.yspeed = -(ball.yspeed); ball.yhot = abs(ball.yhot-ball.width);};
- if( hasBallCollidedBlock() ) { ball.yspeed = -(ball.yspeed); /*ball.xspeed = -(ball.xspeed);*/ ball.yhot = abs(ball.yhot-ball.width);};
+ if( hasBallCollidedBar() && ball_isfree ) { ball.yspeed = -(ball.yspeed); ball.yhot = abs(ball.yhot-ball.width); playSound(1000,100);};
+ if( hasBallCollidedBarOnSide() ) { ball.xspeed = -(ball.xspeed); playSound(1000,100);};
+ if( hasBallCollidedBlock() ) { playSound(500,100); };
if( remainingBlocks <= 0 ) { printf("GAGNE !!\n"); done=1;}
// Update screen
- DrawScene();
+ drawScene();
+ nbFrames++;
+
+ // Calculate and stabilize Frame Rate
+/* if( update.getTicks() > 1000 )
+ {
+ printf("FPS: %f\n", (float)nbFrames );
+ update.start();
+ nbFrames = 0;
+ }
+ while( fps.getTicks() < (1000 / NB_FRAMES_PER_SECOND) )
+ {
+ ;
+ }
+ fps.start();*/
+ SDL_Delay(20);
}
+ // Cleanup what we used
+ releaseBuzzer();
+ freeRessources();
+ SDL_QuitSubSystem( SDL_INIT_TIMER );
+ SDL_Quit();
+
return 0;
}
Modified: trunk/target/demos/armanoid/bar.bmp
===================================================================
(Binary files differ)
Added: trunk/target/demos/armanoid/buzzer.c
===================================================================
--- trunk/target/demos/armanoid/buzzer.c (rev 0)
+++ trunk/target/demos/armanoid/buzzer.c 2007-01-27 15:47:09 UTC (rev 556)
@@ -0,0 +1,100 @@
+#include "SDL.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "buzzer.h"
+
+int playing, initialized = 0;
+FILE* fd;
+FILE* fda;
+
+#ifdef TARGET
+#define FREQ_SYS_FILE "/sys/class/pwm/pwm0/frequency"
+#define ACTIVE_SYS_FILE "/sys/class/pwm/pwm0/active"
+#else
+#define FREQ_SYS_FILE "./frequency"
+#define ACTIVE_SYS_FILE "./active"
+#endif // TARGET
+
+SDL_TimerID myTimerID;
+
+/*
+ * Initialize the buzzer "sound" system
+ *
+ */
+int initBuzzer()
+{
+ int result = -1;
+
+ if( !initialized )
+ {
+ playing = 0;
+ fd = fopen( FREQ_SYS_FILE, "w" );
+ fda = fopen( ACTIVE_SYS_FILE, "w" );
+
+ if( (fd != NULL) && (fda != NULL) )
+ {
+ result = 0;
+ initialized = 1;
+ } else
+ printf("Buzzer: can't open /sys interface\n");
+ }
+ return( result );
+}
+
+static Uint32 timerExpired(Uint32 interval, void* param)
+{
+ playing = 0;
+ // Stop PWM
+ fwrite( "0", 1, 1, fda );
+ fflush( fda );
+ //printf("Timer expired\n");
+
+ return(0);
+}
+
+/*
+ * Free ressources allocated by the sound system
+ *
+ */
+void releaseBuzzer()
+{
+ if( initialized )
+ {
+ playing = 0;
+ SDL_RemoveTimer( myTimerID );
+ timerExpired(0, 0);
+ fclose( fd );
+ fclose( fda );
+ initialized = 0;
+ }
+}
+
+/*
+ * Play a sound at given frequency during given time
+ *
+ * Frequency should be in Hertz
+ * Time in milliseconds
+ */
+void playSound( int aFreq, int aTime )
+{
+ if( (!playing) && (initialized) )
+ {
+ char freq[16]; int nchar;
+
+ // Limit frequency to [50,15k] Herz
+ if( aFreq < 50 ) aFreq = 50;
+ if( aFreq > 15000 ) aFreq = 15000;
+ // Launch PWM
+ fwrite( "1", 1, 1, fda );
+ fflush( fda );
+ // Program PWM with given frequency
+ nchar = sprintf( freq, "%d", aFreq);
+ fwrite( freq, nchar, nchar, fd );
+ fflush( fd );
+ // Launch a timer that will stop sound when desired value is reached
+ myTimerID = SDL_AddTimer( (Uint32) aTime, timerExpired , 0);
+ playing = 1;
+ }
+}
+
Added: trunk/target/demos/armanoid/buzzer.h
===================================================================
--- trunk/target/demos/armanoid/buzzer.h (rev 0)
+++ trunk/target/demos/armanoid/buzzer.h 2007-01-27 15:47:09 UTC (rev 556)
@@ -0,0 +1,13 @@
+#ifndef H_BUZZER_INCLUDE
+#define H_BUZZER_INCLUDE
+
+
+// Initialize the buzzer "sound" system
+int initBuzzer( void );
+// Play a sound on buzzer at given frequency (Hz) and during given time (ms)
+void playSound( int aFreq, int aTime );
+// Free ressources allocated by the sound system
+void releaseBuzzer( void );
+
+
+#endif //H_BUZZER_INCLUDE
Added: trunk/target/demos/armanoid/collide.c
===================================================================
--- trunk/target/demos/armanoid/collide.c (rev 0)
+++ trunk/target/demos/armanoid/collide.c 2007-01-27 15:47:09 UTC (rev 556)
@@ -0,0 +1,208 @@
+#include "collide.h"
+
+/*if this header is not supported on your system comment out
+the assert function call in SDL_TransparentPixel*/
+#include "assert.h"
+
+/*returns maximum or minimum of number*/
+#define SDL_COLLIDE_MAX(a,b) ((a > b) ? a : b)
+#define SDL_COLLIDE_MIN(a,b) ((a < b) ? a : b)
+
+/*
+ SDL surface test if offset (u,v) is a transparent pixel
+*/
+int SDL_CollideTransparentPixelTest(SDL_Surface *surface , int u , int v)
+{
+ /*assert that (u,v) offsets lie within surface*/
+ assert( !((u < surface->w) || (v < surface->h)) );
+
+ int bpp = surface->format->BytesPerPixel;
+ /*here p is the address to the pixel we want to retrieve*/
+ Uint8 *p = (Uint8 *)surface->pixels + v * surface->pitch + u * bpp;
+
+ Uint32 pixelcolor;
+
+ switch(bpp)
+ {
+ case(1):
+ pixelcolor = *p;
+ break;
+
+ case(2):
+ pixelcolor = *(Uint16 *)p;
+ break;
+
+ case(3):
+ if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
+ pixelcolor = p[0] << 16 | p[1] << 8 | p[2];
+ else
+ pixelcolor = p[0] | p[1] << 8 | p[2] << 16;
+ break;
+
+ case(4):
+ pixelcolor = *(Uint32 *)p;
+ break;
+ }
+
+ /*test whether pixels color == color of transparent pixels for that surface*/
+ return (pixelcolor == surface->format->colorkey);
+}
+
+/*
+ SDL pixel perfect collision test
+*/
+int SDL_CollidePixel(SDL_Surface *as , int ax , int ay ,
+ SDL_Surface *bs , int bx , int by)
+{
+ /*Box A;
+ Box B;*/
+
+ /*a - bottom right co-ordinates*/
+ int ax1 = ax + as->w - 1;
+ int ay1 = ay + as->h - 1;
+
+ /*b - bottom right co-ordinates*/
+ int bx1 = bx + bs->w - 1;
+ int by1 = by + bs->h - 1;
+
+ /*check if bounding boxes intersect*/
+ if((bx1 < ax) || (ax1 < bx))
+ return 0;
+ if((by1 < ay) || (ay1 < by))
+ return 0;
+
+
+/*Now lets make the bouding box for which we check for a pixel collision*/
+
+ /*To get the bounding box we do
+ Ax1,Ay1_____________
+ | |
+ | |
+ | |
+ | Bx1,By1_____________
+ | | | |
+ | | | |
+ |_______|_______| |
+ | Ax2,Ay2 |
+ | |
+ | |
+ |____________Bx2,By2
+
+ To find that overlap we find the biggest left hand cordinate
+ AND the smallest right hand co-ordinate
+
+ To find it for y we do the biggest top y value
+ AND the smallest bottom y value
+
+ Therefore the overlap here is Bx1,By1 --> Ax2,Ay2
+
+ Remember Ax2 = Ax1 + SA->w
+ Bx2 = Bx1 + SB->w
+
+ Ay2 = Ay1 + SA->h
+ By2 = By1 + SB->h
+ */
+
+ /*now we loop round every pixel in area of
+ intersection
+ if 2 pixels alpha values on 2 surfaces at the
+ same place != 0 then we have a collision*/
+ int inter_x0 = SDL_COLLIDE_MAX(ax,bx);
+ int inter_x1 = SDL_COLLIDE_MIN(ax1,bx1);
+
+ int inter_y0 = SDL_COLLIDE_MAX(ay,by);
+ int inter_y1 = SDL_COLLIDE_MIN(ay1,by1);
+
+ int y;
+ for(y = inter_y0 ; y <= inter_y1 ; y++)
+ {
+ int x;
+ for(x = inter_x0 ; x <= inter_x1 ; x++)
+ {
+ /*compute offsets for surface
+ before pass to TransparentPixel test*/
+ if((SDL_CollideTransparentPixelTest(as , x-ax , y-ay))
+ && (SDL_CollideTransparentPixelTest(bs , x-bx , y-by)))
+ return 1;
+ }
+ }
+}
+
+/*
+ SDL bounding box collision test
+*/
+int SDL_CollideBoundingBox(SDL_Surface *sa , int ax , int ay ,
+ SDL_Surface *sb , int bx , int by)
+{
+ if(bx + sb->w < ax) return 0; //just checking if their
+ if(bx > ax + sa->w) return 0; //bounding boxes even touch
+
+ if(by + sb->h < ay) return 0;
+ if(by > ay + sa->h) return 0;
+
+ return 1; //bounding boxes intersect
+}
+
+/*
+ SDL bounding box collision tests (works on SDL_Rect's)
+*/
+int SDL_CollideBoundingBoxRect(SDL_Rect a , SDL_Rect b)
+{
+ if(b.x + b.w < a.x) return 0; //just checking if their
+ if(b.x > a.x + a.w) return 0; //bounding boxes even touch
+
+ if(b.y + b.h < a.y) return 0;
+ if(b.y > a.y + a.h) return 0;
+
+ return 1; //bounding boxes intersect
+}
+
+/*
+ tests whether 2 circles intersect
+
+ circle1 : centre (x1,y1) with radius r1
+ circle2 : centre (x2,y2) with radius r2
+
+ (allow distance between circles of offset)
+*/
+int SDL_CollideBoundingCircle(int x1 , int y1 , int r1 ,
+ int x2 , int y2 , int r2 , int offset)
+{
+ int xdiff = x2 - x1; // x plane difference
+ int ydiff = y2 - y1; // y plane difference
+
+ /* distance between the circles centres squared */
+ int dcentre_sq = (ydiff*ydiff) + (xdiff*xdiff);
+
+ /* calculate sum of radiuses squared */
+ int r_sum_sq = r1 + r2; // square on seperate line, so
+ r_sum_sq *= r_sum_sq; // dont recompute r1 + r2
+
+ return (dcentre_sq - r_sum_sq <= (offset*offset));
+}
+
+/*
+ a circle intersection detection algorithm that will use
+ the position of the centre of the surface as the centre of
+ the circle and approximate the radius using the width and height
+ of the surface (for example a rect of 4x6 would have r = 2.5).
+*/
+int SDL_SurfaceCollideBoundingCircle(SDL_Surface *a , int x1 , int y1 ,
+ SDL_Surface *b , int x2 , int y2 ,
+ int offset)
+{
+ int r1,r2;
+ /* if radius is not specified
+ we approximate them using SDL_Surface's
+ width and height average and divide by 2*/
+ r1 = (a->w + a->h) / 4; // same as / 2) / 2;
+ r2 = (b->w + b->h) / 4;
+
+ x1 += a->w / 2; // offset x and y
+ y1 += a->h / 2; // co-ordinates into
+ // centre of image
+ x2 += b->w / 2;
+ y2 += b->h / 2;
+
+ return SDL_CollideBoundingCircle(x1,y1,r1,x2,y2,r2,offset);
+}
Added: trunk/target/demos/armanoid/collide.h
===================================================================
--- trunk/target/demos/armanoid/collide.h (rev 0)
+++ trunk/target/demos/armanoid/collide.h 2007-01-27 15:47:09 UTC (rev 556)
@@ -0,0 +1,86 @@
+/*
+ SDL_collide: A 2D collision detection library for use with SDL
+ Copyright (C) 2005 Amir Taaki
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Amir Taaki
+ ge...@gm...
+
+ Rob Loach
+ http://robloach.net
+*/
+
+/* A simple library for collision detection using SDL */
+
+#ifndef _SDL_COLLIDE_h
+#define _SDL_COLLIDE_h
+
+/* Set up for C function definitions, even when using C++ */
+// #ifdef __cplusplus
+//extern "C" {
+// #endif
+
+#include "SDL.h"
+/*
+ SDL surface test if offset (u,v) is a transparent pixel
+*/
+int SDL_CollideTransparentPixelTest(SDL_Surface *surface , int u , int v);
+
+/*
+ SDL pixel perfect collision test
+*/
+int SDL_CollidePixel(SDL_Surface *as , int ax , int ay ,
+ SDL_Surface *bs , int bx , int by);
+
+/*
+ SDL bounding box collision test
+*/
+int SDL_CollideBoundingBox(SDL_Surface *sa , int ax , int ay ,
+ SDL_Surface *sb , int bx , int by);
+
+/*
+ SDL bounding box collision tests (works on SDL_Rect's)
+*/
+int SDL_CollideBoundingBoxRect(SDL_Rect a , SDL_Rect b);
+
+/*
+ tests whether 2 circles intersect
+
+ circle1 : centre (x1,y1) with radius r1
+ circle2 : centre (x2,y2) with radius r2
+
+ (allow distance between circles of offset)
+*/
+int SDL_CollideBoundingCircle(int x1 , int y1 , int r1 ,
+ int x2 , int y2 , int r2 , int offset);
+
+/*
+ a circle intersection detection algorithm that will use
+ the position of the centre of the surface as the centre of
+ the circle and approximate the radius using the width and height
+ of the surface (for example a rect of 4x6 would have r = 2.5).
+*/
+int SDL_SurfaceCollideBoundingCircle(SDL_Surface *a , int x1 , int y1 ,
+ SDL_Surface *b , int x2 , int y2 ,
+ int offset);
+
+
+/* Ends C function definitions when using C++ */
+// #ifdef __cplusplus
+// }
+// #endif
+
+#endif /* _SDL_COLLIDE_h */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2007-01-26 13:49:25
|
Revision: 555
http://armadeus.svn.sourceforge.net/armadeus/?rev=555&view=rev
Author: artemys
Date: 2007-01-26 05:49:18 -0800 (Fri, 26 Jan 2007)
Log Message:
-----------
[TOOLCHAIN] Correct GDB 6.5 for target building problem, due to recent patch (ARM core loading)
Modified Paths:
--------------
trunk/patches/012-buildroot-gdb-arm-corefile-support.diff
Modified: trunk/patches/012-buildroot-gdb-arm-corefile-support.diff
===================================================================
--- trunk/patches/012-buildroot-gdb-arm-corefile-support.diff 2007-01-25 14:18:32 UTC (rev 554)
+++ trunk/patches/012-buildroot-gdb-arm-corefile-support.diff 2007-01-26 13:49:18 UTC (rev 555)
@@ -1,16 +1,18 @@
diff -urN buildroot/toolchain/gdb/6.5/401-arm-coredump.patch buildroot/toolchain/gdb/6.5.mod/401-arm-coredump.patch
--- buildroot/toolchain/gdb/6.5/401-arm-coredump.patch 1970-01-01 01:00:00.000000000 +0100
+++ buildroot/toolchain/gdb/6.5.mod/401-arm-coredump.patch 2007-01-25 14:16:20.000000000 +0100
-@@ -0,0 +1,103 @@
+@@ -0,0 +1,105 @@
+--- cvs-6.4.orig/gdb/arm-linux-tdep.c 2006-04-10 16:39:24.000000000 +0200
++++ cvs-6.4/gdb/arm-linux-tdep.c 2007-01-25 12:07:47.000000000 +0100
-+@@ -70,6 +70,18 @@
++@@ -70,6 +70,20 @@
+ #define ARM_LINUX_JB_ELEMENT_SIZE INT_REGISTER_SIZE
+ #define ARM_LINUX_JB_PC 21
+
++/* Following enums used to implement the core file support. */
++enum {
+++#ifndef ELF_NGREG
++ ELF_NGREG = 18, /* core reg size is 72 */
+++#endif
++ ELF_NFPREG = 33,
++ ELF_NVRREG = 33
++};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|