├── .gitmodules ├── Makefile ├── README.md ├── orig ├── 10 ├── 11 ├── 12 ├── 13 ├── 14 ├── 15 ├── 16 ├── 17 ├── 18 ├── 19 ├── 20 ├── 21 ├── 22 ├── 23 ├── 24 ├── 25 ├── 26 ├── 27 ├── 28 ├── 29 ├── 30 ├── 01 ├── 02 ├── 03 ├── 04 ├── 05 ├── 06 ├── 07 ├── 08 ├── 09 ├── AFONT.DAT ├── AFONT.S ├── ANTELOPE.GAS ├── BEASTY3.CRY ├── BEASTY4.CRY ├── BEASTY5.CRY ├── BEASTY6.CRY ├── BEASTY7.CRY ├── BEASTY8.CRY ├── BFONT.DAT ├── BFONT.S ├── CAMEL.GAS ├── CFONT.DAT ├── CFONT.S ├── DONKY.GAS ├── EEPRIM.S ├── GOAT.GAS ├── HORSE.GAS ├── IANS.GAS ├── LLAMA.GAS ├── MOOMOO.DAT ├── OBJ2D.S ├── OX.GAS ├── RANTAB.BIN ├── RANTAB.DAT ├── RAVE4.MOD ├── SINES.BIN ├── SINES.DAT ├── SMP.BIN ├── SMP.DAT ├── STOAT.GAS ├── SYN6.O ├── T2K.DB ├── TUNE1.MOD ├── TUNE12.MOD ├── TUNE13.MOD ├── TUNE3.MOD ├── TUNE5.MOD ├── TUNE7.MOD ├── VIDINIT.S ├── XCAMEL.GAS ├── YAK.DB ├── YAK.S ├── YAKGPU.S └── t2k.jag ├── src ├── README.md ├── afont.s ├── bfont.s ├── cfont.s ├── dat │ ├── afont.dat │ ├── bfont.dat │ ├── cfont.dat │ ├── digits.dat │ ├── moomoo.dat │ ├── obj2d.dat │ ├── rantab.dat │ └── sines.dat ├── eeprim.s ├── gpu │ ├── antelope.gas │ ├── camel.gas │ ├── donky.gas │ ├── goat.gas │ ├── horse.gas │ ├── ians.gas │ ├── llama.gas │ ├── ox.gas │ ├── stoat.gas │ └── xcamel.gas ├── images │ ├── beasty3-trunc.cry │ ├── beasty3.cry │ ├── beasty4.cry │ ├── beasty5.cry │ ├── beasty6.cry │ ├── beasty7.cry │ └── beasty8.cry ├── images_sounds.s ├── incbin │ ├── paddingaftersamples.bin │ ├── paddingbetweentunesandsmp.bin │ ├── romheader.bin │ └── sound_samples_table.bin ├── jaguar.inc ├── obj2d.s ├── smp │ ├── mk.c │ └── smp.dat ├── sounds │ ├── rave4.mod │ ├── samples │ │ ├── 10 │ │ ├── 11 │ │ ├── 12 │ │ ├── 13 │ │ ├── 14 │ │ ├── 15 │ │ ├── 16 │ │ ├── 17 │ │ ├── 18 │ │ ├── 19 │ │ ├── 20 │ │ ├── 21 │ │ ├── 22 │ │ ├── 23 │ │ ├── 24 │ │ ├── 25 │ │ ├── 26 │ │ ├── 27 │ │ ├── 28 │ │ ├── 29 │ │ ├── 30 │ │ ├── 01 │ │ ├── 02 │ │ ├── 03 │ │ ├── 04 │ │ ├── 05 │ │ ├── 06 │ │ ├── 07 │ │ ├── 08 │ │ └── 09 │ ├── tune1.mod │ ├── tune12.mod │ ├── tune13.mod │ ├── tune3.mod │ ├── tune5.mod │ └── tune7.mod ├── vidinit.s ├── yak.s └── yakgpu.s ├── unused ├── gpu.inc ├── rantab.bin ├── sines.bin ├── syn6.o ├── t2k.db ├── t2kmusic94 │ ├── README │ ├── TEMPEST.ZIP │ └── TEMPEST │ │ ├── A.DB │ │ ├── L.DB │ │ ├── L1.DB │ │ ├── L2.DB │ │ ├── MOD │ │ ├── TUNE1.MOD │ │ ├── TUNE10.MOD │ │ ├── TUNE11.MOD │ │ ├── TUNE12.MOD │ │ ├── TUNE13.MOD │ │ ├── TUNE2.MOD │ │ ├── TUNE3.MOD │ │ ├── TUNE4.MOD │ │ ├── TUNE5.MOD │ │ ├── TUNE6.MOD │ │ ├── TUNE7.MOD │ │ ├── TUNE8.MOD │ │ └── TUNE9.MOD │ │ ├── SMP │ │ ├── 10 │ │ ├── 11 │ │ ├── 12 │ │ ├── 13 │ │ ├── 14 │ │ ├── 15 │ │ ├── 16 │ │ ├── 17 │ │ ├── 18 │ │ ├── 19 │ │ ├── 20 │ │ ├── 21 │ │ ├── 01 │ │ ├── 02 │ │ ├── 03 │ │ ├── 04 │ │ ├── 05 │ │ ├── 06 │ │ ├── 07 │ │ ├── 08 │ │ ├── 09 │ │ ├── MK.C │ │ ├── MK.LNK │ │ ├── MK.O │ │ ├── MK.TTP │ │ ├── SMP.BIN │ │ ├── SMP.DAT │ │ ├── SMP1.BIN │ │ ├── SMP1.DAT │ │ ├── SMP2.BIN │ │ └── SMP2.DAT │ │ ├── TEST.DB │ │ ├── TEST.DTA │ │ ├── TEST.SYM │ │ └── TEST.TXT └── yak.db └── utils ├── CreateCart.py ├── ExtractObjectFilesFromAbsFile.py ├── ExtractObjectFilesFromRom.py ├── bin2dat.py ├── filefix.exe ├── t2k.exe └── t2kreadme.txt /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/.gitmodules -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean 2 | 3 | DIRS=src/bin 4 | 5 | all: clean t2000.abs 6 | 7 | t2000.abs: sources 8 | $(shell mkdir -p $(DIRS)) 9 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/donky.gas -o src/bin/donky.o 10 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/camel.gas -o src/bin/camel.o 11 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/antelope.gas -o src/bin/antelope.o 12 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/goat.gas -o src/bin/goat.o 13 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/llama.gas -o src/bin/llama.o 14 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/horse.gas -o src/bin/horse.o 15 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/ox.gas -o src/bin/ox.o 16 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/stoat.gas -o src/bin/stoat.o 17 | ./rmac/rmac -fr -mtom -l -isrc src/gpu/xcamel.gas -o src/bin/xcamel.o 18 | ./rmac/rmac -fb -isrc -l src/yak.s -o src/bin/yak.cof 19 | ./rmac/rmac -fb -isrc src/yakgpu.s -o src/bin/yakgpu.cof 20 | ./rmac/rmac -fb -isrc src/vidinit.s -o src/bin/vidinit.cof 21 | ./rmac/rmac -fb -Isrc src/images_sounds.s -o src/bin/images_sounds.o 22 | ./rln/rln -z -e -a 802000 4000 efa8 src/bin/yak.cof src/bin/vidinit.cof src/bin/yakgpu.cof src/bin/images_sounds.o -o t2000.abs 23 | echo "44e71799ee06615a59ff57b2c8a1ef52 t2000.abs" | md5sum -c 24 | 25 | clean_build: t2000.abs 26 | echo "44e71799ee06615a59ff57b2c8a1ef52 t2000.abs" | md5sum -c 27 | 28 | sources: src/*.s src/gpu/*.gas 29 | 30 | cartridge: clean_build 31 | wine ./utils/filefix t2000.abs 32 | ./utils/CreateCart.py t2k.rom src/incbin/romheader.bin T2000.TX 33 | echo "602bc9953d3737b1ba52b2a0d9932f7c t2k.rom" | md5sum -c 34 | 35 | dirty: t2000.abs 36 | wine ./utils/filefix t2000.abs 37 | ./utils/CreateCart.py t2k.rom src/incbin/romheader.bin T2000.TX 38 | 39 | run: cartridge 40 | wine ./utils/t2k.exe t2k.rom 41 | 42 | clean: 43 | -rm src/bin/*.o 44 | -rm src/bin/*.cof 45 | -rm -f t2000.abs 46 | -rm -f T2000.DB 47 | -rm -f T2000.TX 48 | -rm -f T2000.DTA 49 | -rm -f t2k.rom 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tempest 2000 (1994) by Jeff Minter 2 | 3 | 4 | This is the source code for Tempest 2000 by Jeff Minter originally published in 1994 for the ill-fated Atari Jaguar. 5 | 6 | The source code can be compiled into an executable that you can run in `virtual-jaguar`. 7 | 8 | ## Build Instructions 9 | 10 | ### Build Requirements 11 | ```sh 12 | sudo apt install build-essentials wine python3 13 | ``` 14 | 15 | ### Build the assembler toolchain 16 | 17 | We use two tools to build the source code: `rmac` and `rln`. If you already have these installed you may have some 18 | luck using them, if not you can build the versions suggested below as they are known to work. 19 | 20 | First clone the Tempest 2000 repository: 21 | 22 | ```sh 23 | git clone https://github.com/mwenge/tempest2k.git 24 | ``` 25 | Next run the following commands to enter the Tempest 2000 repository and downoad the assembler toolchain: 26 | 27 | ```sh 28 | cd tempest2k 29 | git clone git@github.com:mwenge/rmac.git 30 | git clone http://tiddly.mooo.com:5000/rln/rln.git 31 | ``` 32 | 33 | Now you can build the toolchain, as follows: 34 | 35 | ```sh 36 | cd rmac 37 | make 38 | cd ../rln 39 | make 40 | cd .. 41 | ``` 42 | 43 | ### Build Tempest 2000 44 | 45 | To build the game: 46 | ```sh 47 | make 48 | ``` 49 | 50 | ### Play Tempest 2000 51 | Your best option is using [BigPEmu](https://www.richwhitehouse.com/jaguar/index.php?content=download). 52 | 53 | ```sh 54 | wget https://www.richwhitehouse.com/jaguar/builds/BigPEmu_Linux64_v118.tar.gz 55 | tar zxvf BigPEmu_Linux64_v118.tar.gz 56 | bigpemu/bigpemu t2000.abs 57 | ``` 58 | 59 | ### Other Build and Play Options 60 | 61 | To build a cartridge file that is byte-for-byte identical to the rom commonly circulated in forums: 62 | ```sh 63 | make cartridge 64 | ``` 65 | 66 | This will create a file `t2k.rom`. You can run this as follows using `virtual-jaguar`: 67 | ```sh 68 | virtual-jaguar t2k.rom 69 | ``` 70 | 71 | or bigpemu: 72 | ```sh 73 | bigpemu t2k.rom 74 | ``` 75 | 76 | You can also run the game in 'Tempest 77 | 2k' a Jaguar emulator specifically optimized for Tempest 2000. 78 | Tempest 2K is available in the `utils` folder as `t2k.exe`. To use it run the 79 | following at the command line: 80 | ```sh 81 | wine ./utils/t2k.exe t2k.rom 82 | ``` 83 | 84 | ### Reading the source code. 85 | 86 | The place to start is in [yak.s](src/yak.s). 87 | 88 | ### Reading the original, uncommented source code. 89 | Take a look in the [orig folder](orig/). 90 | 91 | -------------------------------------------------------------------------------- /orig/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/01 -------------------------------------------------------------------------------- /orig/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/02 -------------------------------------------------------------------------------- /orig/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/03 -------------------------------------------------------------------------------- /orig/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/04 -------------------------------------------------------------------------------- /orig/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/05 -------------------------------------------------------------------------------- /orig/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/06 -------------------------------------------------------------------------------- /orig/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/07 -------------------------------------------------------------------------------- /orig/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/08 -------------------------------------------------------------------------------- /orig/09: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/09 -------------------------------------------------------------------------------- /orig/10: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/10 -------------------------------------------------------------------------------- /orig/11: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/11 -------------------------------------------------------------------------------- /orig/12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/12 -------------------------------------------------------------------------------- /orig/13: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/13 -------------------------------------------------------------------------------- /orig/14: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/14 -------------------------------------------------------------------------------- /orig/15: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/15 -------------------------------------------------------------------------------- /orig/16: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/16 -------------------------------------------------------------------------------- /orig/17: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/17 -------------------------------------------------------------------------------- /orig/18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/18 -------------------------------------------------------------------------------- /orig/19: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/19 -------------------------------------------------------------------------------- /orig/20: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/20 -------------------------------------------------------------------------------- /orig/21: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/21 -------------------------------------------------------------------------------- /orig/22: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/22 -------------------------------------------------------------------------------- /orig/23: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/23 -------------------------------------------------------------------------------- /orig/24: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/24 -------------------------------------------------------------------------------- /orig/25: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/25 -------------------------------------------------------------------------------- /orig/26: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/26 -------------------------------------------------------------------------------- /orig/27: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/27 -------------------------------------------------------------------------------- /orig/28: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/28 -------------------------------------------------------------------------------- /orig/29: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/29 -------------------------------------------------------------------------------- /orig/30: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /orig/AFONT.DAT: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 2 font, by Joby 4 | 5 | dc.l pic2 6 | dc.l $0012000f 7 | 8 | dc.l $b6011e ;Space 9 | dc.l $b600d2 ;! 10 | dc.l $a40001 ;" 11 | dc.l $a40001 ;# 12 | dc.l $a40001 ;$ 13 | dc.l $a40001 ;% 14 | dc.l $a40001 ;& 15 | dc.l $a40001 ;' 16 | dc.l $a40001 ;( 17 | dc.l $a40001 ;) 18 | dc.l $a40001 ;* 19 | dc.l $a40001 ;+ 20 | dc.l $b600f8 ;, 21 | dc.l $b6010b ;- 22 | dc.l $b600c2 ;. 23 | dc.l $a40001 ;/ 24 | dc.l $910000 ;0 25 | dc.l $910010 ;1 26 | dc.l $910020 ;2 27 | dc.l $910030 ;3 28 | dc.l $910040 ;4 29 | dc.l $910050 ;5 30 | dc.l $910060 ;6 31 | dc.l $910070 ;7 32 | dc.l $910080 ;8 33 | dc.l $910090 ;9 34 | dc.l $b600e5 ;: 35 | dc.l $a40001 ;; 36 | dc.l $a40001 ;< 37 | dc.l $a40001 ;= 38 | dc.l $a40001 ;> 39 | dc.l $a40001 ;? 40 | dc.l $a40001 ;@ 41 | dc.l $a40001 ;A 42 | dc.l $a40014 ;B 43 | dc.l $a40027 ;C 44 | dc.l $a4003a ;D 45 | dc.l $a4004d ;E 46 | dc.l $a40060 ;F 47 | dc.l $a40073 ;G 48 | dc.l $a40086 ;H 49 | dc.l $a40099 ;I 50 | dc.l $a400ac ;J 51 | dc.l $a400bf ;K 52 | dc.l $a400d2 ;L 53 | dc.l $a400e5 ;M 54 | dc.l $a400f8 ;N 55 | dc.l $a4010b ;O 56 | dc.l $a4011e ;P 57 | dc.l $b60001 ;Q 58 | dc.l $b60014 ;R 59 | dc.l $b60027 ;S 60 | dc.l $b6003a ;T 61 | dc.l $b6004d ;U 62 | dc.l $b60060 ;V 63 | dc.l $b60073 ;W 64 | dc.l $b60086 ;X 65 | dc.l $b60099 ;Y 66 | dc.l $b600ac ;Z 67 | dc.l $a40001 ;[ 68 | dc.l $a40001 ;\ 69 | dc.l $a40001 ;] 70 | dc.l $a40001 ;^ 71 | dc.l $a40001 ;_ 72 | dc.l $a40001 ;` 73 | dc.l $a40001 ;a 74 | dc.l $a40014 ;b 75 | dc.l $a40027 ;c 76 | dc.l $a4003a ;d 77 | dc.l $a4004d ;e 78 | dc.l $a40060 ;f 79 | dc.l $a40073 ;g 80 | dc.l $a40086 ;h 81 | dc.l $a40099 ;i 82 | dc.l $a400ac ;j 83 | dc.l $a400bf ;k 84 | dc.l $a400d2 ;l 85 | dc.l $a400e5 ;m 86 | dc.l $a400f8 ;n 87 | dc.l $a4010b ;o 88 | dc.l $a4011e ;p 89 | dc.l $b60001 ;q 90 | dc.l $b60014 ;r 91 | dc.l $b60027 ;s 92 | dc.l $b6003a ;t 93 | dc.l $b6004d ;u 94 | dc.l $b60060 ;v 95 | dc.l $b60073 ;w 96 | dc.l $b60086 ;x 97 | dc.l $b60099 ;y 98 | dc.l $b600ac ;z 99 | dc.l $a40001 ;{ 100 | dc.l $a40001 ;| 101 | dc.l $a40001 ;} 102 | dc.l $a40001 ;~ 103 | dc.l $a40001 ;DEL 104 | -------------------------------------------------------------------------------- /orig/AFONT.S: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 2 font, by Joby 4 | 5 | afont: dc.l pic2 6 | dc.l $0012000f 7 | 8 | dc.l $b6011e ;Space 9 | dc.l $b600d2 ;! 10 | dc.l $a40001 ;" 11 | dc.l $a40001 ;# 12 | dc.l $a40001 ;$ 13 | dc.l $a40001 ;% 14 | dc.l $a40001 ;& 15 | dc.l $a40001 ;' 16 | dc.l $9100a5 ;( 17 | dc.l $9100ba ;) 18 | dc.l $a40001 ;* 19 | dc.l $a40001 ;+ 20 | dc.l $b600f8 ;, 21 | dc.l $b6010b ;- 22 | dc.l $b600c2 ;. 23 | dc.l $a40001 ;/ 24 | dc.l $910000 ;0 25 | dc.l $910010 ;1 26 | dc.l $910020 ;2 27 | dc.l $910030 ;3 28 | dc.l $910040 ;4 29 | dc.l $910050 ;5 30 | dc.l $910060 ;6 31 | dc.l $910070 ;7 32 | dc.l $910080 ;8 33 | dc.l $910090 ;9 34 | dc.l $b600e5 ;: 35 | dc.l $a40001 ;; 36 | dc.l $a40001 ;< 37 | dc.l $a40001 ;= 38 | dc.l $a40001 ;> 39 | dc.l $a40001 ;? 40 | dc.l $a40001 ;@ 41 | dc.l $a40001 ;A 42 | dc.l $a40014 ;B 43 | dc.l $a40027 ;C 44 | dc.l $a4003a ;D 45 | dc.l $a4004d ;E 46 | dc.l $a40060 ;F 47 | dc.l $a40073 ;G 48 | dc.l $a40086 ;H 49 | dc.l $a40099 ;I 50 | dc.l $a400ac ;J 51 | dc.l $a400bf ;K 52 | dc.l $a400d2 ;L 53 | dc.l $a400e5 ;M 54 | dc.l $a400f8 ;N 55 | dc.l $a4010b ;O 56 | dc.l $a4011e ;P 57 | dc.l $b60001 ;Q 58 | dc.l $b60014 ;R 59 | dc.l $b60027 ;S 60 | dc.l $b6003a ;T 61 | dc.l $b6004d ;U 62 | dc.l $b60060 ;V 63 | dc.l $b60073 ;W 64 | dc.l $b60086 ;X 65 | dc.l $b60099 ;Y 66 | dc.l $b600ac ;Z 67 | dc.l $a40001 ;[ 68 | dc.l $a40001 ;\ 69 | dc.l $a40001 ;] 70 | dc.l $a40001 ;^ 71 | dc.l $a40001 ;_ 72 | dc.l $a40001 ;` 73 | dc.l $a40001 ;a 74 | dc.l $a40014 ;b 75 | dc.l $a40027 ;c 76 | dc.l $a4003a ;d 77 | dc.l $a4004d ;e 78 | dc.l $a40060 ;f 79 | dc.l $a40073 ;g 80 | dc.l $a40086 ;h 81 | dc.l $a40099 ;i 82 | dc.l $a400ac ;j 83 | dc.l $a400bf ;k 84 | dc.l $a400d2 ;l 85 | dc.l $a400e5 ;m 86 | dc.l $a400f8 ;n 87 | dc.l $a4010b ;o 88 | dc.l $a4011e ;p 89 | dc.l $b60001 ;q 90 | dc.l $b60014 ;r 91 | dc.l $b60027 ;s 92 | dc.l $b6003a ;t 93 | dc.l $b6004d ;u 94 | dc.l $b60060 ;v 95 | dc.l $b60073 ;w 96 | dc.l $b60086 ;x 97 | dc.l $b60099 ;y 98 | dc.l $b600ac ;z 99 | dc.l $a40001 ;{ 100 | dc.l $a40001 ;| 101 | dc.l $a40001 ;} 102 | dc.l $a40001 ;~ 103 | dc.l $a40001 ;DEL 104 | -------------------------------------------------------------------------------- /orig/BEASTY3.CRY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/BEASTY3.CRY -------------------------------------------------------------------------------- /orig/BEASTY4.CRY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/BEASTY4.CRY -------------------------------------------------------------------------------- /orig/BEASTY5.CRY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/BEASTY5.CRY -------------------------------------------------------------------------------- /orig/BEASTY6.CRY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/BEASTY6.CRY -------------------------------------------------------------------------------- /orig/BEASTY7.CRY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/BEASTY7.CRY -------------------------------------------------------------------------------- /orig/BEASTY8.CRY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/BEASTY8.CRY -------------------------------------------------------------------------------- /orig/BFONT.DAT: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 6 font, 32x32, by Joby 4 | 5 | dc.l pic6 6 | dc.l $001f001b 7 | 8 | dc.l $470119 ;Space 9 | dc.l $8d0047 ;! 10 | dc.l $470119 ;" 11 | dc.l $470119 ;# 12 | dc.l $470119 ;$ 13 | dc.l $470119 ;% 14 | dc.l $470119 ;& 15 | dc.l $470119 ;' 16 | dc.l $470119 ;( 17 | dc.l $470119 ;) 18 | dc.l $8d008d ;* 19 | dc.l $470119 ;+ 20 | dc.l $b600f8 ;, 21 | dc.l $8d006a ;- 22 | dc.l $8d0024 ;. 23 | dc.l $470119 ;/ 24 | dc.l $6a0001 ;0 25 | dc.l $6a0024 ;1 26 | dc.l $6a0047 ;2 27 | dc.l $6a006a ;3 28 | dc.l $6a008d ;4 29 | dc.l $6a00b0 ;5 30 | dc.l $6a00d3 ;6 31 | dc.l $6a00f6 ;7 32 | dc.l $6a0119 ;8 33 | dc.l $8d0001 ;9 34 | dc.l $b600e5 ;: 35 | dc.l $470119 ;; 36 | dc.l $470119 ;< 37 | dc.l $470119 ;= 38 | dc.l $470119 ;> 39 | dc.l $8d00b0 ;? 40 | dc.l $470119 ;@ 41 | dc.l $010001 ;A 42 | dc.l $010024 ;B 43 | dc.l $010047 ;C 44 | dc.l $01006a ;D 45 | dc.l $01008d ;E 46 | dc.l $0100b0 ;F 47 | dc.l $0100d3 ;G 48 | dc.l $0100f6 ;H 49 | dc.l $010119 ;I 50 | dc.l $240001 ;J 51 | dc.l $240024 ;K 52 | dc.l $240047 ;L 53 | dc.l $24006a ;M 54 | dc.l $24008d ;N 55 | dc.l $2400b0 ;O 56 | dc.l $2400d3 ;P 57 | dc.l $2400f6 ;Q 58 | dc.l $240119 ;R 59 | dc.l $470001 ;S 60 | dc.l $470024 ;T 61 | dc.l $470047 ;U 62 | dc.l $47006a ;V 63 | dc.l $47008d ;W 64 | dc.l $4700b0 ;X 65 | dc.l $4700d3 ;Y 66 | dc.l $4700f6 ;Z 67 | dc.l $470119 ;[ 68 | dc.l $470119 ;\ 69 | dc.l $470119 ;] 70 | dc.l $470119 ;^ 71 | dc.l $470119 ;_ 72 | dc.l $470119 ;` 73 | dc.l $010001 ;A 74 | dc.l $010024 ;B 75 | dc.l $010047 ;C 76 | dc.l $01006a ;D 77 | dc.l $01008d ;E 78 | dc.l $0100b0 ;F 79 | dc.l $0100d3 ;G 80 | dc.l $0100f6 ;H 81 | dc.l $010119 ;I 82 | dc.l $240001 ;J 83 | dc.l $240024 ;K 84 | dc.l $240047 ;L 85 | dc.l $24006a ;M 86 | dc.l $24008d ;N 87 | dc.l $2400b0 ;O 88 | dc.l $2400d3 ;P 89 | dc.l $2400f6 ;Q 90 | dc.l $240119 ;R 91 | dc.l $470001 ;S 92 | dc.l $470024 ;T 93 | dc.l $470047 ;U 94 | dc.l $47006a ;V 95 | dc.l $47008d ;W 96 | dc.l $4700b0 ;X 97 | dc.l $4700d3 ;Y 98 | dc.l $4700f6 ;Z 99 | dc.l $470119 ;{ 100 | dc.l $470119 ;| 101 | dc.l $470119 ;} 102 | dc.l $470119 ;~ 103 | dc.l $470119 ;DEL 104 | -------------------------------------------------------------------------------- /orig/BFONT.S: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 6 font, 32x32, by Joby 4 | 5 | bfont: dc.l pic6 6 | dc.l $001f001b 7 | 8 | dc.l $470119 ;Space 9 | dc.l $8d0047 ;! 10 | dc.l $470119 ;" 11 | dc.l $470119 ;# 12 | dc.l $470119 ;$ 13 | dc.l $470119 ;% 14 | dc.l $470119 ;& 15 | dc.l $470119 ;' 16 | dc.l $470119 ;( 17 | dc.l $470119 ;) 18 | dc.l $8d008d ;* 19 | dc.l $470119 ;+ 20 | dc.l $b600f8 ;, 21 | dc.l $8d006a ;- 22 | dc.l $8d0024 ;. 23 | dc.l $470119 ;/ 24 | dc.l $6a0001 ;0 25 | dc.l $6a0024 ;1 26 | dc.l $6a0047 ;2 27 | dc.l $6a006a ;3 28 | dc.l $6a008d ;4 29 | dc.l $6a00b0 ;5 30 | dc.l $6a00d3 ;6 31 | dc.l $6a00f6 ;7 32 | dc.l $6a0119 ;8 33 | dc.l $8d0001 ;9 34 | dc.l $b600e5 ;: 35 | dc.l $470119 ;; 36 | dc.l $470119 ;< 37 | dc.l $470119 ;= 38 | dc.l $470119 ;> 39 | dc.l $8d00b0 ;? 40 | dc.l $470119 ;@ 41 | dc.l $010001 ;A 42 | dc.l $010024 ;B 43 | dc.l $010047 ;C 44 | dc.l $01006a ;D 45 | dc.l $01008d ;E 46 | dc.l $0100b0 ;F 47 | dc.l $0100d3 ;G 48 | dc.l $0100f6 ;H 49 | dc.l $010119 ;I 50 | dc.l $240001 ;J 51 | dc.l $240024 ;K 52 | dc.l $240047 ;L 53 | dc.l $24006a ;M 54 | dc.l $24008d ;N 55 | dc.l $2400b0 ;O 56 | dc.l $2400d3 ;P 57 | dc.l $2400f6 ;Q 58 | dc.l $240119 ;R 59 | dc.l $470001 ;S 60 | dc.l $470024 ;T 61 | dc.l $470047 ;U 62 | dc.l $47006a ;V 63 | dc.l $47008d ;W 64 | dc.l $4700b0 ;X 65 | dc.l $4700d3 ;Y 66 | dc.l $4700f6 ;Z 67 | dc.l $470119 ;[ 68 | dc.l $470119 ;\ 69 | dc.l $470119 ;] 70 | dc.l $470119 ;^ 71 | dc.l $470119 ;_ 72 | dc.l $470119 ;` 73 | dc.l $010001 ;A 74 | dc.l $010024 ;B 75 | dc.l $010047 ;C 76 | dc.l $01006a ;D 77 | dc.l $01008d ;E 78 | dc.l $0100b0 ;F 79 | dc.l $0100d3 ;G 80 | dc.l $0100f6 ;H 81 | dc.l $010119 ;I 82 | dc.l $240001 ;J 83 | dc.l $240024 ;K 84 | dc.l $240047 ;L 85 | dc.l $24006a ;M 86 | dc.l $24008d ;N 87 | dc.l $2400b0 ;O 88 | dc.l $2400d3 ;P 89 | dc.l $2400f6 ;Q 90 | dc.l $240119 ;R 91 | dc.l $470001 ;S 92 | dc.l $470024 ;T 93 | dc.l $470047 ;U 94 | dc.l $47006a ;V 95 | dc.l $47008d ;W 96 | dc.l $4700b0 ;X 97 | dc.l $4700d3 ;Y 98 | dc.l $4700f6 ;Z 99 | dc.l $470119 ;{ 100 | dc.l $470119 ;| 101 | dc.l $470119 ;} 102 | dc.l $470119 ;~ 103 | dc.l $470119 ;DEL 104 | -------------------------------------------------------------------------------- /orig/CFONT.DAT: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 1 font, 8x8, by Joby 4 | 5 | dc.l pic 6 | dc.l $00080008 7 | 8 | dc.l $b50137 ;Space 9 | dc.l $9e0026 ;! 10 | dc.l $b50137 ;" 11 | dc.l $b50137 ;# 12 | dc.l $b50137 ;$ 13 | dc.l $b50137 ;% 14 | dc.l $b50137 ;& 15 | dc.l $9e0047 ;' 16 | dc.l $9e0052 ;( 17 | dc.l $9e005d ;) 18 | dc.l $b50137 ;* 19 | dc.l $b50137 ;+ 20 | dc.l $9e003c ;, 21 | dc.l $9e0068 ;- 22 | dc.l $9e001b ;. 23 | dc.l $b50137 ;/ 24 | dc.l $a9001b ;0 25 | dc.l $a90026 ;1 26 | dc.l $a90031 ;2 27 | dc.l $a9003c ;3 28 | dc.l $a90047 ;4 29 | dc.l $a90052 ;5 30 | dc.l $a9005d ;6 31 | dc.l $a90068 ;7 32 | dc.l $a90073 ;8 33 | dc.l $a9007e ;9 34 | dc.l $9e0031 ;: 35 | dc.l $9b0031 ;; 36 | dc.l $b50137 ;< 37 | dc.l $b50137 ;= 38 | dc.l $b50137 ;> 39 | dc.l $b50137 ;? 40 | dc.l $b50137 ;@ 41 | dc.l $b5001b ;A 42 | dc.l $b50026 ;B 43 | dc.l $b50031 ;C 44 | dc.l $b5003c ;D 45 | dc.l $b50047 ;E 46 | dc.l $b50052 ;F 47 | dc.l $b5005d ;G 48 | dc.l $b50068 ;H 49 | dc.l $b50073 ;I 50 | dc.l $b5007e ;J 51 | dc.l $b50089 ;K 52 | dc.l $b50094 ;L 53 | dc.l $b5009f ;M 54 | dc.l $b500aa ;N 55 | dc.l $b500b5 ;O 56 | dc.l $b500c0 ;P 57 | dc.l $b500cb ;Q 58 | dc.l $b500d6 ;R 59 | dc.l $b500e1 ;S 60 | dc.l $b500ec ;T 61 | dc.l $b500f7 ;U 62 | dc.l $b50102 ;V 63 | dc.l $b5010d ;W 64 | dc.l $b50118 ;X 65 | dc.l $b50123 ;Y 66 | dc.l $b5012e ;Z 67 | dc.l $b50137 ;[ 68 | dc.l $b50137 ;\ 69 | dc.l $b50137 ;] 70 | dc.l $b50137 ;^ 71 | dc.l $b50137 ;_ 72 | dc.l $b50137 ;` 73 | dc.l $bf001b ;A 74 | dc.l $bf0026 ;B 75 | dc.l $bf0031 ;C 76 | dc.l $bf003c ;D 77 | dc.l $bf0047 ;E 78 | dc.l $bf0052 ;F 79 | dc.l $bf005d ;G 80 | dc.l $bf0068 ;H 81 | dc.l $bf0073 ;I 82 | dc.l $bf007e ;J 83 | dc.l $bf0089 ;K 84 | dc.l $bf0094 ;L 85 | dc.l $bf009f ;M 86 | dc.l $bf00aa ;N 87 | dc.l $bf00b5 ;O 88 | dc.l $bf00c0 ;P 89 | dc.l $bf00cb ;Q 90 | dc.l $bf00d6 ;R 91 | dc.l $bf00e1 ;S 92 | dc.l $bf00ec ;T 93 | dc.l $bf00f7 ;U 94 | dc.l $bf0102 ;V 95 | dc.l $bf010d ;W 96 | dc.l $bf0118 ;X 97 | dc.l $bf0123 ;Y 98 | dc.l $bf012e ;Z 99 | dc.l $b50137 ;{ 100 | dc.l $b50137 ;| 101 | dc.l $b50137 ;} 102 | dc.l $b50137 ;~ 103 | dc.l $b50137 ;DEL 104 | -------------------------------------------------------------------------------- /orig/CFONT.S: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 1 font, 8x8, by Joby 4 | 5 | cfont: dc.l pic 6 | dc.l $00080008 7 | 8 | dc.l $b50137 ;Space 9 | dc.l $9e0026 ;! 10 | dc.l $b50137 ;" 11 | dc.l $b50137 ;# 12 | dc.l $b50137 ;$ 13 | dc.l $b50137 ;% 14 | dc.l $b50137 ;& 15 | dc.l $9e0047 ;' 16 | dc.l $9e0052 ;( 17 | dc.l $9e005d ;) 18 | dc.l $b50137 ;* 19 | dc.l $b50137 ;+ 20 | dc.l $9e003c ;, 21 | dc.l $9e0068 ;- 22 | dc.l $9e001b ;. 23 | dc.l $b50137 ;/ 24 | dc.l $a9001b ;0 25 | dc.l $a90026 ;1 26 | dc.l $a90031 ;2 27 | dc.l $a9003c ;3 28 | dc.l $a90047 ;4 29 | dc.l $a90052 ;5 30 | dc.l $a9005d ;6 31 | dc.l $a90068 ;7 32 | dc.l $a90073 ;8 33 | dc.l $a9007e ;9 34 | dc.l $9e0031 ;: 35 | dc.l $9b0031 ;; 36 | dc.l $b50137 ;< 37 | dc.l $b50137 ;= 38 | dc.l $b50137 ;> 39 | dc.l $b50137 ;? 40 | dc.l $b50137 ;@ 41 | dc.l $b5001b ;A 42 | dc.l $b50026 ;B 43 | dc.l $b50031 ;C 44 | dc.l $b5003c ;D 45 | dc.l $b50047 ;E 46 | dc.l $b50052 ;F 47 | dc.l $b5005d ;G 48 | dc.l $b50068 ;H 49 | dc.l $b50073 ;I 50 | dc.l $b5007e ;J 51 | dc.l $b50089 ;K 52 | dc.l $b50094 ;L 53 | dc.l $b5009f ;M 54 | dc.l $b500aa ;N 55 | dc.l $b500b5 ;O 56 | dc.l $b500c0 ;P 57 | dc.l $b500cb ;Q 58 | dc.l $b500d6 ;R 59 | dc.l $b500e1 ;S 60 | dc.l $b500ec ;T 61 | dc.l $b500f7 ;U 62 | dc.l $b50102 ;V 63 | dc.l $b5010d ;W 64 | dc.l $b50118 ;X 65 | dc.l $b50123 ;Y 66 | dc.l $b5012e ;Z 67 | dc.l $b50137 ;[ 68 | dc.l $b50137 ;\ 69 | dc.l $b50137 ;] 70 | dc.l $b50137 ;^ 71 | dc.l $b50137 ;_ 72 | dc.l $b50137 ;` 73 | dc.l $bf001b ;A 74 | dc.l $bf0026 ;B 75 | dc.l $bf0031 ;C 76 | dc.l $bf003c ;D 77 | dc.l $bf0047 ;E 78 | dc.l $bf0052 ;F 79 | dc.l $bf005d ;G 80 | dc.l $bf0068 ;H 81 | dc.l $bf0073 ;I 82 | dc.l $bf007e ;J 83 | dc.l $bf0089 ;K 84 | dc.l $bf0094 ;L 85 | dc.l $bf009f ;M 86 | dc.l $bf00aa ;N 87 | dc.l $bf00b5 ;O 88 | dc.l $bf00c0 ;P 89 | dc.l $bf00cb ;Q 90 | dc.l $bf00d6 ;R 91 | dc.l $bf00e1 ;S 92 | dc.l $bf00ec ;T 93 | dc.l $bf00f7 ;U 94 | dc.l $bf0102 ;V 95 | dc.l $bf010d ;W 96 | dc.l $bf0118 ;X 97 | dc.l $bf0123 ;Y 98 | dc.l $bf012e ;Z 99 | dc.l $b50137 ;{ 100 | dc.l $b50137 ;| 101 | dc.l $b50137 ;} 102 | dc.l $b50137 ;~ 103 | dc.l $b50137 ;DEL 104 | -------------------------------------------------------------------------------- /orig/EEPRIM.S: -------------------------------------------------------------------------------- 1 | ;************************************************ 2 | ; * 3 | ; EEPROM Write & Read Primitives * 4 | ; * 5 | ;************************************************ 6 | ; 7 | ; Hi-Score on-board-cartridge EEPROM primitives 8 | ; for use by Jaguar game cartridge developers. 9 | ; 10 | ; 128 bytes (accessable as 64 words) of non-volatile 11 | ; memory are available on Jaguar game cartridges to 12 | ; preserve Hi-scores or other game status. 13 | ; Data is retained for up to 10 years, and a minimum 14 | ; of 10,000 read/write cycles is assured, according to 15 | ; product literature. 16 | ; 17 | ; 18 | ; 19 | ; 20 | ; 21 | ; Programmer: Dave Staugas 22 | ; Atari, Sunnyvale 23 | ; [408] 745-8802 24 | ; 25 | ; Last Update: 24-Sept-93 26 | ; 27 | ; 28 | ; Equates needed that may already be defined in the JAGUAR.INC file.. 29 | ; 30 | JOY1 equ $f14000 ;this we'll use as our I/O base address 31 | GPIO_0 equ $f14800 ;General purpose I/O #0 32 | GPIO_1 equ $f15000 ;General purpose I/O #1 33 | ; 34 | ; Equates derived from the above 35 | ; to allow indirect with 16-bit displacement addressing 36 | ; 37 | GPIO_0of equ GPIO_0-JOY1 ;offset to GPIO_0 (when addr reg Ax -> JOY1) 38 | GPIO_1of equ GPIO_1-JOY1 ;offset to GPIO_1 (when addr reg Ax -> JOY1) 39 | ; 40 | ; Commands specific to the National Semiconductor NM93C14 41 | ; 42 | ; 9-bit commands.. 43 | ; 876543210 44 | eREAD equ %110000000 ;read from EEPROM 45 | eEWEN equ %100110000 ;Erase/write Enable 46 | eWRITE equ %101000000 ;Write selected register 47 | eEWDS equ %100000000 ;Erase/Write disable (default) 48 | ; 49 | ; 50 | ; DO (data out) - is read on bit0 of JOY1 51 | ; DI (data in) - is written on bit0 of GPIO_0 52 | ; CS (chip select) - is pulsed low by any access to GPIO_1 53 | ; 54 | ; 55 | ;***************************************************************** 56 | ; 57 | ; Write a word to EEPROM 58 | ; 59 | ; entry: d0.w = data to be written 60 | ; d1.w = least signifigant 6 bits specify write address (0-63) 61 | ; 62 | ; exit: all preserved 63 | ; 64 | ; 65 | eewrite:: 66 | movem.l a0/d0-d4,-(sp) 67 | lea JOY1,a0 ;set ptr to EEPROM i/o addresses 68 | ; 69 | tst.w GPIO_1of(a0) ;strobe ChipSelect 70 | ; 71 | move.w #eEWEN,d2 ;erase/write enable command 72 | bsr out9bits ;send it to EEPROM 73 | ; 74 | tst.w GPIO_1of(a0) ;strobe ChipSelect 75 | ; 76 | andi.w #$3f,d1 ;force write addr to be legit (0-63) 77 | ori.w #eWRITE,d1 ;form WRITE command 78 | move.w d1,d2 79 | bsr out9bits ;send it to EEPROM 80 | ; 81 | move.w d0,d2 ;get 16-bit data word to send 82 | bsr out16bit ; & send it 83 | ; 84 | tst.w GPIO_1of(a0) ;strobe ChipSelect 85 | ; 86 | nop ;1 us required after CS for status valid 87 | nop 88 | move.w #1,d2 89 | wrwait: 90 | move.w (a0),d3 ;wait until write is complete 91 | and.w d2,d3 92 | beq wrwait 93 | ; 94 | move.w #eEWDS,d2 ;get erase/write disable command 95 | bsr out9bits ;send it 96 | ; 97 | tst.w GPIO_1of(a0) ;strobe ChipSelect 98 | ; 99 | movem.l (sp)+,a0/d0-d4 100 | rts ;we're done 101 | ; 102 | ; 103 | ; 104 | ;****************************************************** 105 | ; 106 | ; 107 | ; Read a word from EEPROM 108 | ; 109 | ; entry: d1.w = least signifigant 6 bits specify read address (0-63) 110 | ; 111 | ; exit: d0.w = data as read from EEPROM 112 | ; all other registers preserved 113 | ; 114 | eeread:: 115 | movem.l a0/d1-d4,-(sp) 116 | lea JOY1,a0 ;set ptr to EEPROM i/o address 117 | ; 118 | tst.w GPIO_1of(a0) ;strobe ChipSelect 119 | ; 120 | andi.w #$3f,d1 ;force legit read addr 121 | ori.w #eREAD,d1 122 | move.w d1,d2 123 | bsr out9bits 124 | ; 125 | moveq #0,d0 126 | moveq #15,d3 ;pick up 17 bits (1st is dummy) 127 | inlp: 128 | tst.w GPIO_0of(a0) 129 | nop 130 | move.w (a0),d1 131 | lsr.w #1,d1 132 | addx.w d0,d0 133 | nop 134 | nop 135 | nop 136 | nop 137 | nop 138 | nop 139 | dbra d3,inlp 140 | ; 141 | movem.l (sp)+,a0/d1-d4 142 | rts 143 | ; 144 | ; 145 | ; 146 | ;************************************************************** 147 | ; 148 | ; Subordinate Routines needed by "eewrite" 149 | ; 150 | ; Serial data sent to device is written to DI, bit0 of GPIO_0 151 | ; 152 | ; entry: 153 | ; a0 -> JOY1 154 | ; d2.w = 16-bit data word to write 155 | ; 156 | ; exit: 157 | ; d2.w, d3.l destroyed 158 | ; 159 | out16bit: 160 | rol.w #1,d2 ;align 1st serial data bit (bit15) to bit0 161 | moveq #15,d3 ;send 16 bits 162 | bra.s out9lp 163 | ; 164 | ; entry: 165 | ; a0 -> JOY1 166 | ; d2.w = 9-bit command to write 167 | ; 168 | out9bits: 169 | rol.w #8,d2 ;align 1st serial data bit (bit8) to bit0 170 | moveq #8,d3 ;send 9 171 | out9lp: 172 | move.w d2,GPIO_0of(a0) ;write next bit 173 | nop 174 | nop 175 | nop ;delay next write 176 | nop 177 | nop 178 | nop 179 | rol.w #1,d2 ;adjust bit0 for next datum 180 | dbra d3,out9lp ;go for all 9 or all 16 181 | rts 182 | ; 183 | ; 184 | -------------------------------------------------------------------------------- /orig/IANS.GAS: -------------------------------------------------------------------------------- 1 | 2 | Base equ $f00000 3 | 4 | INCLUDE "blit.inc" ; blitter defintions 5 | INCLUDE "jaguar.inc" ; Jaguar General definitions 6 | 7 | in_buf EQU (D_ENDRAM-128) ;Room tp pass params to DSP 8 | 9 | 10 | 11 | 12 | starplane: 13 | ; 14 | ; draw a single plane of random field; inputs Nstars,Col,Xdisp,Ydisp,Rseed 15 | ; Uses the pseudorandom sequence generator Thang out of Graphix Gems 16 | 17 | nstars REGEQU r4 18 | starcol REGEQU r5 19 | xdisp REGEQU r6 20 | ydisp REGEQU r7 21 | xseed REGEQU r8 22 | xmask REGEQU r9 23 | linesize REGEQU r10 24 | andlim REGEQU r11 25 | himask REGEQU r12 26 | lomask REGEQU r13 27 | scrbase REGEQU r14 28 | maxx REGEQU r15 29 | maxy REGEQU r16 30 | px REGEQU r17 31 | py REGEQU r18 32 | nopixl REGEQU r19 33 | starloop REGEQU r20 34 | yseed REGEQU r21 35 | ymask REGEQU r22 36 | 37 | MACRO ran ;Sequence generator out of Graphics Gems 38 | btst #0,@1 39 | jr z,noxor@@ 40 | shrq #1,@1 ;branch optimisation - the SHRQ is always done 41 | xor @2,@1 42 | noxor@@: nop 43 | ENDM 44 | 45 | movei #in_buf,r0 46 | load (r0),nstars 47 | addq #4,r0 48 | load (r0),starcol 49 | addq #4,r0 50 | load (r0),xdisp 51 | addq #4,r0 52 | load (r0),ydisp 53 | addq #4,r0 54 | load (r0),xseed ;get parameters 55 | addq #4,r0 56 | load (r0),yseed 57 | addq #4,r0 58 | load (r0),scrbase 59 | movei #768,linesize ;size in bytes of a scanline 60 | movei #$ff,lomask ;for chopping out bytes 61 | movei #384,maxx 62 | movei #240,maxy ;clipping boundaries 63 | movei #no_pixl,nopixl ;loop address - faster than using MOVEI each time 64 | movei #star_loop,starloop ;another loop address 65 | movei #$110,xmask ;init constants 66 | movei #$b8,ymask 67 | movei #$1ff,andlim 68 | 69 | 70 | star_loop: ran xseed,xmask 71 | move xseed,px 72 | ran yseed,ymask 73 | move yseed,py ;"random" XY star position 74 | add xdisp,px 75 | add ydisp,py ;add XY offset passed in 76 | and andlim,px 77 | and lomask,py ;wrap to 0-255 78 | cmp maxx,px 79 | jump pl,(nopixl) ;clip max X 80 | cmp maxy,py ;no harm if this is done whatever 81 | jump pl,(nopixl) 82 | shlq #1,px ;x to point at words 83 | mult linesize,py ;offset in lines to bytes 84 | add px,py 85 | add scrbase,py ;py now points at pixel 86 | storew starcol,(py) ;plot the star 87 | no_pixl: subq #1,nstars 88 | jump ne,(starloop) ;loop until nstars is 0 89 | nop 90 | StopDSP: movei #D_CTRL,r1 ;point at DSP flags 91 | load (r1),r0 92 | bclr #0,r0 93 | store r0,(r1) ;stop the DSP 94 | stoploop: jr stoploop 95 | nop 96 | 97 | 98 | 99 | 100 | movei #stopgpu,r0 101 | jump (r0) 102 | nop 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /orig/RANTAB.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/RANTAB.BIN -------------------------------------------------------------------------------- /orig/RANTAB.DAT: -------------------------------------------------------------------------------- 1 | 2 | ;*======================================================================* 3 | ;* 4 | ;* File: RANTAB.DAT 5 | ;* 6 | ;* Created From: RANTAB.BIN 7 | ;* BIN2DAT v1.0 Nov 19 1992 10:56:40 Andrew J Burgess 8 | ;* 9 | ;*======================================================================* 10 | 11 | DC.L $DCA9B154,$F54E554A,$2C0965A3,$C2F9F0FD 12 | DC.L $A8BF49EC,$0EF73FD2,$82820939,$BDF7BC2D 13 | DC.L $2A684411,$58223B77,$567E471A,$243AFA79 14 | DC.L $1A13DAE8,$985D6F3C,$E2E62B6C,$E01EE94F 15 | DC.L $52BC12ED,$5EEF6E99,$ADB4C445,$D9DAAED2 16 | DC.L $CEC3B79D,$B7E67225,$A7CB374B,$78E5CF79 17 | DC.L $BD6F0DE4,$7B423033,$36A25710,$078964EF 18 | DC.L $B173B210,$910B050A,$5F749D31,$9E6AC5B0 19 | DC.L $1E863FF6,$70178361,$01351C9C,$9818EAC7 20 | DC.L $1D93A043,$14AC6204,$69F6CDF0,$FC998B7A 21 | DC.L $9CEC2D35,$6114277F,$CD38000E,$D027A92A 22 | DC.L $4C948122,$32534AAF,$C1779FFB,$7EA1D813 23 | DC.L $8FF2487C,$DBBE0C1F,$8D75D50D,$C9FAB9DF 24 | DC.L $1BC68634,$85085920,$FF66BBE4,$365C7676 25 | DC.L $264E938D,$6A68D6CF,$55A67B96,$DEB318DD 26 | DC.L $4715F123,$C72E4F00,$6D928A20,$9E11087A 27 | DC.L $BA3887C3,$A24C8183,$5003D380,$54718729 28 | DC.L $605A1DA4,$C5EB2F60,$E08A30AC,$41F56305 29 | DC.L $37CAAACA,$1F3C8839,$6915F121,$E75B6EB6 30 | DC.L $DFB85E21,$0F1C51FB,$19D1BAAB,$3E1BAF06 31 | DC.L $49DD023A,$F84D8046,$319001AD,$FDA4893D 32 | DC.L $04C9B63E,$5BDBD89B,$C1BF7490,$64840B2B 33 | DC.L $5F5C9FFE,$9173E107,$4D9AC271,$E2C8D058 34 | DC.L $6BBB63A5,$E9AEA1B5,$84E5D72F,$6BE19BF3 35 | DC.L $755ADC56,$FED6E367,$A78E50CC,$C0D44342 36 | DC.L $A89257A6,$B4EABE25,$B5289794,$EE400C66 37 | DC.L $7D165145,$B2FCF4D1,$955DB052,$A348E796 38 | DC.L $E3468C41,$D3B8CBA5,$C4A0B3D7,$03EE9559 39 | DC.L $F2330F53,$70CC8E3D,$8BEBDE6D,$C8886CED 40 | DC.L $7D28407F,$7C198524,$32E82C8C,$673B1712 41 | DC.L $8F4BF378,$D4D529C6,$9AAA3423,$C097CE26 42 | DC.L $650A16F9,$D944F8AB,$0262B906,$2EF4FF72 43 | 44 | ;*======================================================================* 45 | ;* EOF * 46 | ;*======================================================================* 47 | 48 | -------------------------------------------------------------------------------- /orig/RAVE4.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/RAVE4.MOD -------------------------------------------------------------------------------- /orig/SINES.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/SINES.BIN -------------------------------------------------------------------------------- /orig/SINES.DAT: -------------------------------------------------------------------------------- 1 | 2 | ;*======================================================================* 3 | ;* 4 | ;* File: SINES.DAT 5 | ;* 6 | ;* Created From: SINES.BIN 7 | ;* BIN2DAT v1.0 Nov 19 1992 10:56:40 Andrew J Burgess 8 | ;* 9 | ;*======================================================================* 10 | 11 | DC.L $00030609,$0C0F1215,$181B1E21,$24272A2D 12 | DC.L $30333639,$3B3E4144,$46494B4E,$50535557 13 | DC.L $595C5E60,$62646667,$696B6D6E,$70717274 14 | DC.L $75767778,$797A7B7B,$7C7D7D7E,$7E7E7E7E 15 | DC.L $7E7E7E7E,$7E7E7D7D,$7C7B7B7A,$79787776 16 | DC.L $75737271,$6F6E6C6B,$69676563,$615F5D5B 17 | DC.L $59575552,$504D4B48,$4643403E,$3B383533 18 | DC.L $302D2A27,$24211E1B,$1815120F,$0C080502 19 | DC.L $00FDFAF7,$F4F0EDEA,$E7E4E1DE,$DBD8D5D2 20 | DC.L $CFCDCAC7,$C4C1BFBC,$B9B7B4B2,$B0ADABA9 21 | DC.L $A6A4A2A0,$9E9C9A98,$97959392,$908F8D8C 22 | DC.L $8B8A8988,$87868584,$84838382,$82828282 23 | DC.L $82828282,$82838383,$84858586,$8788898A 24 | DC.L $8B8D8E8F,$91929496,$97999B9D,$9FA1A3A5 25 | DC.L $A7AAACAE,$B1B3B6B8,$BBBDC0C3,$C5C8CBCE 26 | DC.L $D1D4D7D9,$DCDFE2E6,$E9ECEFF2,$F5F8FBFE 27 | DC.L $00000192,$032304B5,$064507D5,$09630AF0 28 | DC.L $0C7C0E05,$0F8C1111,$12931413,$158F1708 29 | DC.L $187D19EF,$1B5C1CC5,$1E2A1F8B,$20E6223C 30 | DC.L $238D24D9,$261F275F,$289929CC,$2AFA2C20 31 | DC.L $2D402E59,$2F6B3075,$31783273,$33663452 32 | DC.L $35353611,$36E437AE,$38703929,$39DA3A81 33 | DC.L $3B1F3BB5,$3C413CC4,$3D3D3DAD,$3E143E70 34 | DC.L $3EC43F0D,$3F4D3F83,$3FB03FD2,$3FEB3FFA 35 | DC.L $3FFF3FFA,$3FEB3FD2,$3FB03F83,$3F4D3F0D 36 | DC.L $3EC43E70,$3E143DAD,$3D3D3CC4,$3C413BB5 37 | DC.L $3B1F3A81,$39DA3929,$387037AE,$36E43611 38 | DC.L $35353452,$33663273,$31783075,$2F6B2E59 39 | DC.L $2D402C20,$2AFA29CC,$2899275F,$261F24D9 40 | DC.L $238D223C,$20E61F8B,$1E2A1CC5,$1B5C19EF 41 | DC.L $187D1708,$158F1413,$12931111,$0F8C0E05 42 | DC.L $0C7C0AF0,$096307D5,$064504B5,$03230192 43 | DC.L $0000FF6E,$FDDDFC4B,$FABBF92B,$F79DF610 44 | DC.L $F484F2FB,$F174EFEF,$EE6DECED,$EB71E9F8 45 | DC.L $E883E711,$E5A4E43B,$E2D6E175,$E01ADEC4 46 | DC.L $DD73DC27,$DAE1D9A1,$D867D734,$D606D4E0 47 | DC.L $D3C0D2A7,$D195D08B,$CF88CE8D,$CD9ACCAE 48 | DC.L $CBCBCAEF,$CA1CC952,$C890C7D7,$C726C67F 49 | DC.L $C5E1C54B,$C4BFC43C,$C3C3C353,$C2ECC290 50 | DC.L $C23CC1F3,$C1B3C17D,$C150C12E,$C115C106 51 | DC.L $C101C106,$C115C12E,$C150C17D,$C1B3C1F3 52 | DC.L $C23CC290,$C2ECC353,$C3C3C43C,$C4BFC54B 53 | DC.L $C5E1C67F,$C726C7D7,$C890C952,$CA1CCAEF 54 | DC.L $CBCBCCAE,$CD9ACE8D,$CF88D08B,$D195D2A7 55 | DC.L $D3C0D4E0,$D606D734,$D867D9A1,$DAE1DC27 56 | DC.L $DD73DEC4,$E01AE175,$E2D6E43B,$E5A4E711 57 | DC.L $E883E9F8,$EB71ECED,$EE6DEFEF,$F174F2FB 58 | DC.L $F484F610,$F79DF92B,$FABBFC4B,$FDDDFF6E 59 | 60 | ;*======================================================================* 61 | ;* EOF * 62 | ;*======================================================================* 63 | 64 | -------------------------------------------------------------------------------- /orig/SMP.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/SMP.BIN -------------------------------------------------------------------------------- /orig/SMP.DAT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/SMP.DAT -------------------------------------------------------------------------------- /orig/STOAT.GAS: -------------------------------------------------------------------------------- 1 | 2 | Base equ $f00000 3 | 4 | INCLUDE "blit.inc" ; blitter defintions 5 | INCLUDE "jaguar.inc" ; Jaguar General definitions 6 | 7 | gpu_mode EQU (G_RAM+$ffc) ; Number defines which routine the GPU will do 8 | gpu_screen EQU (G_RAM+$ff8) ; The address of the screen the GPU will draw on 9 | source_flags EQU (G_RAM+$ff4) 10 | dest_flags EQU (G_RAM+$ff0) ; Blitter flags 4 source+dest 11 | backg EQU (G_RAM+$fec) 12 | 13 | p_sines EQU $30000 ; 256-byte sine table of unsigned bytes 14 | in_buf EQU (G_RAM+$f60) ; General space for passing stuff to GPU 15 | ORG $f03000 16 | width EQU 384 17 | mwidth EQU 768 18 | height EQU 240 19 | diag EQU $4000 20 | 21 | ;***** EQUATES for Blitter offsets 22 | 23 | _base EQU 0 24 | _flags EQU 1 25 | _clip EQU 2 26 | _mask EQU 2 27 | _pixel EQU 3 28 | _step EQU 4 29 | _fstep EQU 5 30 | _fpixel EQU 6 31 | _inc EQU 7 32 | _finc EQU 8 33 | 34 | MACRO sdiv ;Divide, keeping sign of that which is divided, uses r27 35 | move @2,r31 36 | abs @2 37 | div @1,@2 38 | btst #31,r31 ;Get sign bit of original thang 39 | jr z,sd@@ 40 | nop 41 | neg @2 42 | sd@@: 43 | ENDM 44 | MACRO waitblit ; Wait for the Blitter to stop 45 | wai@@: load (blit),r31 46 | btst #0,r31 47 | jr z,wai@@ 48 | nop 49 | ENDM 50 | 51 | MACRO fmult ;multiply 2 thangs, uses r2-r4, returns in first reg. 52 | moveta @2,r0 ;(preserves second Thang) 53 | moveq #0,r27 54 | move r27,r28 55 | abs @1 56 | addc r28,r27 57 | abs @2 58 | addc r28,r27 59 | move @2,r28 60 | mult @1,r28 61 | move @1,r29 62 | shrq #16,r28 63 | shrq #16,r29 64 | mult @2,r29 65 | shrq #16,@2 66 | add r29,r28 67 | move @2,r29 68 | mult @1,r29 69 | shrq #16,@1 70 | add r29,r28 71 | mult @2,@1 72 | shlq #16,@1 73 | add r28,@1 74 | btst #0,r27 75 | jr z,fmp@@ 76 | movefa r0,@2 77 | neg @1 78 | fmp@@: 79 | ENDM 80 | 81 | 82 | MACRO fjsr ;Fast single-level JSR 83 | move PC,r30 84 | jump (@1) 85 | addq #6,r30 ; Determine Return Address 86 | ENDM 87 | 88 | MACRO frts 89 | jump (r30) 90 | nop 91 | ENDM 92 | 93 | MACRO gjsr ;Fast single-level JSR 94 | move PC,r31 95 | jump (@1) 96 | addq #6,r31 ; Determine Return Address 97 | ENDM 98 | 99 | MACRO grts 100 | jump (r31) 101 | nop 102 | ENDM 103 | 104 | 105 | 106 | texter: 107 | ; 108 | ; Jaguar texter. Input IN_BUF=address of textstring, +4=address of font structure, +8/+12=dropshadow vector X/Y 109 | ; +16/+20=XY scale, +24/+28=XY shear, +32=text origin 110 | 111 | 112 | ;***** 113 | ;* 114 | ;* REX: Robotron explosion generator. Takes an image from the source screen and expands it in X and Y, then 115 | ;* uses a1 to draw the resultant matrix of single pixels. 116 | ;* 117 | ;* Provide: dest screen in gpu_screen, in_buf: 0=source image address 118 | ;* 4=source image start pixel address, 8=x and y size of source, 12=X scale (16:16), 16=Y scale (16:16), 20=X shear (16:16), 24=Y shear, 119 | ;* 28=Mode (0=Top edge, 1=Centered), 32=Dest X and Y 120 | ;* 121 | ;***** 122 | 123 | 124 | blit REGEQU r13 125 | a1 REGEQU r14 126 | a2 REGEQU r15 127 | 128 | _bass REGEQU r2 ;Source base address 129 | spixel REGEQU r3 ;Source pixel start 130 | ssize REGEQU r4 ;Source rectangle size 131 | scalex REGEQU r5 132 | scaley REGEQU r6 ;Scaling X and Y 133 | shearx REGEQU r7 134 | sheary REGEQU r8 ;Shearing X and Y 135 | mode REGEQU r9 ;Centering mode 136 | 137 | xinc REGEQU r10 138 | yinc REGEQU r11 139 | xstep REGEQU r12 140 | ystep REGEQU r16 141 | _xstart REGEQU r17 142 | ystart REGEQU r18 143 | himask REGEQU r19 144 | lomask REGEQU r20 145 | dstxy REGEQU r21 146 | axshear REGEQU r22 147 | ayshear REGEQU r23 148 | 149 | xx REGEQU r24 150 | yy REGEQU r25 151 | x_add REGEQU r26 152 | textptr REGEQU r29 153 | fontbase REGEQU r30 154 | 155 | dropx REGEQU r2 156 | dropy REGEQU r3 157 | 158 | rex: movei #A1_BASE,a1 159 | movei #A2_BASE,a2 ;initialise the usual stuff 160 | movei #B_CMD,blit 161 | xor r0,r0 162 | movei #B_PATD,r1 163 | store r0,(r1) 164 | addq #4,r1 165 | store r0,(r1) 166 | 167 | movei #in_buf,r0 ;load the parameters into registers 168 | load (r0),textptr ;point at start of textstring 169 | addq #4,r0 170 | load (r0),fontbase ;point to start of font datastructure 171 | addq #4,r0 172 | load (r0),dropx 173 | addq #4,r0 174 | load (r0),dropy 175 | addq #4,r0 176 | moveta dropx,dropx 177 | moveta dropy,dropy 178 | load (r0),scalex 179 | addq #4,r0 180 | load (r0),scaley 181 | addq #4,r0 ;get text expansion x/y 182 | load (r0),shearx 183 | addq #4,r0 184 | load (r0),sheary 185 | addq #4,r0 ;get XY shear 186 | load (r0),dstxy ;get dest XY position 187 | addq #4,r0 188 | load (r0),mode ;Mode: 0=straight draw, 1=drop shadow 189 | moveta textptr,r6 190 | moveta dstxy,r7 191 | 192 | load (fontbase),_bass 193 | addq #4,fontbase ;got base page address 194 | load (fontbase),ssize ;got the source size.. 195 | addq #4,fontbase ;now fontbase is really the fontbase 196 | 197 | movei #$ffff0000,himask 198 | movei #$ffff,lomask 199 | 200 | move ssize,x_add 201 | shlq #16,x_add 202 | fmult x_add,scalex 203 | shrq #16,x_add 204 | ; and lomask,x_add ;get X size alone 205 | addq #2,x_add ;make intra-character spacing 206 | movefa r6,textptr ;FMULT mashed it 207 | moveta scalex,scalex 208 | moveta sheary,sheary ;these are modified in the charprint loop 209 | 210 | textloop: loadb (textptr),r0 211 | movei #ntxt,r1 212 | addq #1,textptr ;get char 213 | cmpq #0,r0 ;is it zero? 214 | jump eq,(r1) ;stop if char 0 was encountered 215 | nop 216 | subq #32,r0 ;ASCII 0-31 do NOT print 217 | shlq #2,r0 218 | add fontbase,r0 ;make r0 point to character index 219 | load (r0),spixel ;source-pixel is set 220 | 221 | moveta textptr,textptr 222 | moveta fontbase,fontbase ;these will be bashed when the char is printed 223 | 224 | 225 | move scalex,_xstart 226 | move ssize,r0 227 | move scaley,ystart 228 | move ssize,r1 229 | shlq #16,r0 ;got X size 230 | and himask,r1 ;and Y size as 16:16 231 | fmult _xstart,r0 232 | fmult ystart,r1 ;got (width*scalex) and (height*scaley) 233 | 234 | 235 | move shearx,axshear 236 | move sheary,ayshear 237 | fmult axshear,r1 ;height*xshear 238 | fmult ayshear,r0 ;width*yshear 239 | 240 | move _xstart,xx ;Calculation for CENTERED explosion 241 | move ystart,yy 242 | add axshear,xx 243 | add ayshear,yy 244 | sharq #1,xx 245 | sharq #1,yy ;XX and YY are vector to start pixel for dest blit 246 | 247 | move dstxy,r0 248 | move dstxy,r1 249 | shlq #16,r0 250 | and himask,r1 ;dest X and Y converted to 16:16 frax 251 | sub xx,r0 252 | sub yy,r1 ;r0 has x pixel+frac, r1 has y 253 | 254 | 255 | movei #pasthack,r30 256 | cmpq #0,r0 ;check for bug condition (LH sprite edge off the screen) 257 | nop 258 | nop 259 | jump pl,(r30) 260 | nop 261 | nop 262 | shrnk: 263 | subq #1,ssize ;shrink until pixel's on screen 264 | addq #1,spixel 265 | sub scalex,_xstart 266 | add scalex,r0 267 | nop 268 | nop 269 | jr mi,shrnk 270 | nop 271 | nop 272 | movei #stopgpu,r28 273 | move ssize,r27 274 | shlq #16,r27 275 | nop 276 | jump mi,(r28) 277 | nop 278 | and himask,r27 279 | nop 280 | jump eq,(r28) 281 | nop 282 | 283 | 284 | 285 | 286 | pasthack: 287 | 288 | cmpq #1,mode 289 | jr ne,nods1 290 | nop 291 | movefa dropx,r31 292 | movefa dropy,r30 293 | add r31,r0 294 | add r30,r1 ;do dropshadow positioning 295 | 296 | nods1: move r0,xx 297 | move r0,yy 298 | shrq #16,xx 299 | and lomask,yy ;X integer parts to xx and fractional to yy 300 | move r1,r0 301 | shlq #16,r1 302 | and himask,r0 303 | or r1,yy 304 | or r0,xx ;XX and YY now have a1_pixel and a1_pixelf values 305 | 306 | move _xstart,xstep 307 | move ayshear,ystep 308 | neg xstep 309 | neg ystep 310 | add shearx,xstep ;x step is -(width*scale)-shearx 311 | add scaley,ystep ;y step is -(width*yshear)+scaley 312 | 313 | move xstep,r0 314 | move xstep,r1 315 | shrq #16,r0 316 | and lomask,r1 ;x components set up 317 | 318 | move ystep,xstep 319 | shlq #16,ystep 320 | and himask,xstep 321 | or ystep,r1 322 | or xstep,r0 ;r0/r1 have a1_step and a1_fstep 323 | 324 | move scalex,xinc 325 | move scalex,yinc 326 | shrq #16,xinc 327 | and lomask,yinc 328 | move sheary,scalex 329 | shlq #16,sheary 330 | and himask,scalex 331 | or sheary,yinc 332 | or scalex,xinc ;xinc/yinc have a1_inc and a1_finc 333 | 334 | waitblit 335 | 336 | store xx,(a1+_pixel) 337 | store yy,(a1+_fpixel) 338 | store r0,(a1+_step) 339 | store r1,(a1+_fstep) 340 | store xinc,(a1+_inc) 341 | store yinc,(a1+_finc) 342 | movei #gpu_screen,r0 343 | movei #(PITCH1|PIXEL16|WID384|XADDINC),r1 344 | load (r0),r31 345 | store r1,(a1+_flags) 346 | movei #$1180180,r1 347 | store r31,(a1+_base) ;a1 is now set up... 348 | store r1,(a1+_clip) 349 | 350 | 351 | store _bass,(a2+_base) 352 | store spixel,(a2+_pixel) 353 | move ssize,r0 354 | and lomask,r0 ;get width 355 | neg r0 356 | and lomask,r0 357 | bset #16,r0 ;step is (-xsize,1) 358 | movei #(PITCH1|PIXEL16|WID320|XADDPIX),r1 359 | store r0,(a2+_step) 360 | store r1,(a2+_flags) 361 | 362 | movei #B_COUNT,r0 363 | store ssize,(r0) ;count is destination size 364 | 365 | movei #$fff000,r0 366 | movei #B_IINC,r1 367 | store r0,(r1) ;i-register used in shadowing 368 | 369 | movei #(SRCEN|CLIP_A1|UPDA1F|UPDA1|UPDA2|LFU_A|LFU_AN|DCOMPEN),r0 370 | movei #(SRCEN|CLIP_A1|UPDA1F|UPDA1|UPDA2|LFU_NA|DCOMPEN|SRCSHADE),r1 371 | ; movei #(SRCEN|CLIP_A1|UPDA1F|UPDA1|UPDA2|LFU_A|LFU_AN),r0 372 | cmpq #1,mode 373 | jr ne,nods ;check for drop shadow 374 | nop 375 | move r1,r0 ;extra blitter flags if ds selected 376 | 377 | nods: store r0,(blit) ;draw the sprite 378 | 379 | movefa textptr,textptr 380 | movefa fontbase,fontbase 381 | movefa scalex,scalex 382 | movefa sheary,sheary 383 | add x_add,dstxy ;restore pointers and move over one character space 384 | 385 | 386 | 387 | movei #textloop,r0 388 | jump (r0) 389 | nop ;loop back until zero character 390 | 391 | ntxt: cmpq #1,mode 392 | jr ne,StopGPU 393 | nop 394 | moveq #0,mode 395 | movei #textloop,r0 396 | movefa r6,textptr 397 | movefa r7,dstxy 398 | jump (r0) 399 | nop 400 | 401 | 402 | StopGPU: movei #G_CTRL,r1 ;point at GPU flags 403 | load (r1),r0 404 | bclr #0,r0 405 | store r0,(r1) ;stop the GPU 406 | stoploop: jr stoploop 407 | nop 408 | 409 | 410 | -------------------------------------------------------------------------------- /orig/SYN6.O: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/SYN6.O -------------------------------------------------------------------------------- /orig/T2K.DB: -------------------------------------------------------------------------------- 1 | global mp 2 | global mstart 3 | global sp 4 | global sstart 5 | global sssize 6 | global prio 7 | 8 | procedure upd 9 | sl `mp `rwstart 10 | set mp `mp+4 11 | set mstart (`mstart+`rwsize) 12 | sl `mstart 0 13 | set mstart (`mstart+4) 14 | . 15 | 16 | procedure supd loop 17 | #set actual sample start 18 | sl `sp+@24 `rwstart 19 | #offset repeat start 20 | sl `sp+@32 (lpeek(`sp+@32) + `rwstart) 21 | set sp `sp+`sssize 22 | 23 | set sstart (`sstart+`rwsize) 24 | sl `sstart 0 25 | set sstart (`sstart+4) 26 | . 27 | 28 | procedure nulsupd 29 | sl `sp+@24 0 30 | set sp `sp+sssize 31 | . 32 | 33 | echo "Loading picture data..." 34 | gag on 35 | read beasty3.cry 820000 36 | read beasty4.cry 83f400 37 | read beasty5.cry 85e800 38 | read beasty6.cry 884000 39 | read beasty7.cry 898000 40 | read beasty8.cry 8b7400 41 | gag off 42 | echo "Loading in some toons..." 43 | set mp 8d6800 44 | set mstart 8d6900 45 | read e:\newjag\mod\tune13.mod `mstart 46 | upd 47 | read e:\newjag\mod\tune7.mod `mstart 48 | upd 49 | read e:\newjag\mod\tune1.mod `mstart 50 | upd 51 | read e:\newjag\mod\tune3.mod `mstart 52 | upd 53 | read e:\newjag\mod\rave4.mod `mstart 54 | upd 55 | read e:\newjag\mod\tune5.mod `mstart 56 | upd 57 | read e:\newjag\mod\tune12.mod `mstart 58 | upd 59 | echo "Loading in some samples.." 60 | set sp 9ac800 61 | set sstart 9acd00 62 | set sssize @40 63 | read smp.bin `sp 64 | read e:\newjag\numod\01 `sstart 65 | supd 66 | read e:\newjag\numod\02 `sstart 67 | supd 68 | read e:\newjag\numod\03 `sstart 69 | supd 70 | nulsupd 71 | nulsupd 72 | read e:\newjag\numod\06 `sstart 73 | supd 74 | read e:\newjag\numod\07 `sstart 75 | supd 76 | read e:\newjag\numod\08 `sstart 77 | supd 78 | read e:\newjag\numod\09 `sstart 79 | supd 80 | read e:\newjag\numod\10 `sstart 81 | supd 82 | read e:\newjag\numod\11 `sstart 83 | supd 84 | read e:\newjag\numod\12 `sstart 85 | supd 86 | read e:\newjag\numod\13 `sstart 87 | supd 88 | read e:\newjag\numod\14 `sstart 89 | supd 90 | read e:\newjag\numod\15 `sstart 91 | supd 92 | read e:\newjag\numod\16 `sstart 93 | supd 94 | read e:\newjag\numod\17 `sstart 95 | supd 96 | read e:\newjag\numod\18 `sstart 97 | supd 98 | read e:\newjag\numod\19 `sstart 99 | supd 100 | read e:\newjag\numod\20 `sstart 101 | supd 102 | read e:\newjag\numod\21 `sstart 103 | supd 104 | read e:\newjag\numod\22 `sstart 105 | supd 106 | read e:\newjag\numod\23 `sstart 107 | supd 108 | read e:\newjag\numod\24 `sstart 109 | supd 110 | read e:\newjag\numod\25 `sstart 111 | supd 112 | read e:\newjag\numod\26 `sstart 113 | supd 114 | read e:\newjag\numod\27 `sstart 115 | supd 116 | read e:\newjag\numod\28 `sstart 117 | supd 118 | read e:\newjag\numod\29 `sstart 119 | supd 120 | read e:\newjag\numod\30 `sstart 121 | supd 122 | read e:\newjag\numod\15 `sstart 123 | supd 124 | echo "Loading in that code stuff.." 125 | gag on 126 | load yak.db 127 | 128 | -------------------------------------------------------------------------------- /orig/TUNE1.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/TUNE1.MOD -------------------------------------------------------------------------------- /orig/TUNE12.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/TUNE12.MOD -------------------------------------------------------------------------------- /orig/TUNE13.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/TUNE13.MOD -------------------------------------------------------------------------------- /orig/TUNE3.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/TUNE3.MOD -------------------------------------------------------------------------------- /orig/TUNE5.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/TUNE5.MOD -------------------------------------------------------------------------------- /orig/TUNE7.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/TUNE7.MOD -------------------------------------------------------------------------------- /orig/VIDINIT.S: -------------------------------------------------------------------------------- 1 | .include 'jaguar.inc' 2 | 3 | .globl VideoIni 4 | .globl n_vde 5 | .globl n_vdb 6 | .globl pal 7 | 8 | ; The size of the horizontal and vertical active areas 9 | ; are based on a given center position and then built 10 | ; as offsets of half the size off of these. 11 | 12 | ; In the horizontal direction this needs to take into 13 | ; account the variable resolution that is possible. 14 | 15 | ; THESE ARE THE NTSC DEFINITIONS 16 | ntsc_width equ 1409 17 | ntsc_hmid equ 823 18 | 19 | ntsc_height equ 241 20 | ntsc_vmid equ 266 21 | 22 | ; THESE ARE THE PAL DEFINITIONS 23 | pal_width equ 1381 24 | pal_hmid equ 843 25 | 26 | pal_height equ 287 27 | pal_vmid equ 322 28 | 29 | 30 | VideoIni: 31 | ; Check if NTSC or PAL 32 | ; For now assume NTSC 33 | 34 | movem.l d0-d6,-(sp) 35 | clr pal 36 | 37 | move.w BASE+$14002,d0 ;CONFIG 38 | and.w #$10,d0 39 | beq ispal 40 | 41 | move.w #ntsc_hmid,d2 42 | move.w #ntsc_width,d0 43 | 44 | move.w #ntsc_vmid,d6 45 | move.w #ntsc_height,d4 46 | 47 | bra doit 48 | 49 | ispal: 50 | move.w #pal_hmid,d2 51 | move.w #pal_width,d0 52 | 53 | move.w #pal_vmid,d6 54 | move.w #pal_height,d4 55 | move #1,pal 56 | 57 | doit: 58 | move.w d0,width 59 | move.w d4,height 60 | 61 | move.w d0,d1 62 | asr #1,d1 ; Max width/2 63 | 64 | sub.w d1,d2 ; middle-width/2 65 | add.w #4,d2 ; (middle-width/2)+4 66 | 67 | sub.w #1,d1 ; Width/2-1 68 | or.w #$400,d1 ; (Width/2-1)|$400 69 | 70 | move.w d1,a_hde 71 | move.w d1,HDE 72 | 73 | move.w d2,a_hdb 74 | move.w d2,HDB1 75 | move.w d2,HDB2 76 | 77 | move.w d6,d5 78 | sub.w d4,d5 ; already in half lines 79 | move.w d5,n_vdb 80 | 81 | add.w d4,d6 82 | move.w d6,n_vde 83 | 84 | ; move.w n_vdb,VDB 85 | move.w #$FFFF,VDE 86 | 87 | ; Also lets set up some default colors 88 | 89 | move.w #$0,BG 90 | move.l #$0,BORD1 91 | 92 | movem.l (sp)+,d0-d6 93 | rts 94 | 95 | .bss 96 | 97 | height: 98 | ds.w 1 99 | n_vdb: 100 | ds.w 1 101 | n_vde: 102 | ds.w 1 103 | pal: 104 | ds.w 1 105 | 106 | 107 | width: 108 | ds.w 1 109 | a_hdb: 110 | ds.w 1 111 | a_hde: 112 | ds.w 1 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /orig/YAK.DB: -------------------------------------------------------------------------------- 1 | #Created with FILEFIX version 5 2 | gag on 3 | read yak.txt 802000 ; read yak.dta 4000 ; getsym yak.sym 4 | gag off 5 | echo " start size end" 6 | echo "text 802000 1e090 82008f" 7 | echo "data 4000 afa8 efa7" 8 | echo "bss efa8 9d98 18d3f" 9 | echo "Symbols loaded" 10 | xpc 802000 11 | -------------------------------------------------------------------------------- /orig/YAKGPU.S: -------------------------------------------------------------------------------- 1 | 2 | include "jaguar.inc" 3 | include "blit.inc" 4 | include "gpu.inc" 5 | 6 | ; 7 | ; PUBLIC SYMBOLS 8 | ; 9 | 10 | .globl gpuload 11 | .globl gpurun 12 | .globl gpuwait 13 | .globl fastvector 14 | .globl xvector 15 | .globl demons 16 | .globl parrot 17 | .globl xparrot 18 | .globl texter 19 | .globl bovine 20 | .globl equine 21 | .globl equine2 22 | 23 | 24 | ;*======================================================================* 25 | ;* gpuload() - load a GPU program into GPU RAM 26 | ;* 27 | ;* input: 28 | ;* a0 - 68000 address of GPU program 29 | ;* 30 | ;* preserved: 31 | ;* d0-d1 32 | ;* a0-a1 33 | ;*======================================================================* 34 | gpuload: 35 | 36 | movem.l d0-d2/a0-a1,-(sp) ; save GPU address for restore 37 | 38 | 39 | move.l lastloaded,d0 40 | move.l a0,d1 41 | cmp.l d0,d1 42 | beq qrts ;no need to load if already done 43 | move.l d1,lastloaded 44 | 45 | 46 | ; moveq #8,d0 47 | ; swap d0 48 | clr.l d0 49 | move.l d0,G_CTRL ;make sure the GPU is stopped 50 | 51 | ; This code will load a gpu program into the Blitter at the address 52 | ; specified in the header 53 | 54 | move.l #PITCH1|PIXEL16|WID256|XADDPHR,d0 55 | move.l d0,A1_FLAGS 56 | move.l d0,A2_FLAGS 57 | 58 | ; Point A1BASE to the destination 59 | ; Read destination from header of file 60 | ; Phrase align and find remainder 61 | 62 | move.l (a0)+,d0 63 | move.l d0,d1 64 | and.l #$fffffff8,d0 65 | sub.l d0,d1 66 | move.l d0,A1_BASE 67 | 68 | ; Set the pixel pointer to the offset in d1 69 | 70 | asr.l #1,d1 ; Convert to pixels 71 | move.l d1,A1_PIXEL 72 | 73 | ; Find size of data to load 74 | 75 | move.l (a0)+,d0 76 | asr.l #1,d0 ; Convert to words 77 | or.l #$10000,d0 ; Set 1 outer loop 78 | move.l d0,B_COUNT 79 | 80 | ; Set up Counters register to number of words 81 | 82 | ; Point A2BASE to the source 83 | ; a0 now points to the data 84 | ; Phrase align and find remainder 85 | 86 | move.l a0,d0 87 | move.l d0,d2 88 | and.l #$fffffff8,d0 89 | sub.l d0,d2 90 | move.l d0,A2_BASE 91 | 92 | ; Set the pixel pointer to the offset in d1 93 | 94 | asr.l #1,d2 ; Convert to pixels 95 | move.l d2,A2_PIXEL 96 | 97 | ; Now Turn IT ON !!!!!!!!!!!!! 98 | 99 | ; DESTINATION = SOURCE 100 | ; NO OUTER LOOP 101 | 102 | ; cmp.l d1,d2 103 | ; bpl.s .aligned 104 | or.l d1,d2 105 | beq.s .aligned 106 | 107 | move.l #SRCEN|SRCENX|LFU_AN|LFU_A,d0 108 | bra.s .blit_go 109 | .aligned: 110 | move.l #SRCEN|LFU_AN|LFU_A,d0 111 | .blit_go: 112 | move.l d0,B_CMD 113 | ; 114 | ; NOTE: No Wait for BLTTER Idle - I have yet to be overrun but WARNING 115 | ; 116 | 117 | wblit: move.l B_CMD,d0 118 | btst #0,d0 119 | beq wblit 120 | 121 | qrts: movem.l (sp)+,d0-d2/a0-a1 122 | rts 123 | 124 | ;*======================================================================* 125 | ;* gpurun() - tell the GPU to begin execution 126 | ;* 127 | ;* input: 128 | ;* a0 - 68000 address of GPU program 129 | ;* 130 | ;* preserved: 131 | ;* d0-d1 132 | ;* a0 133 | ;*======================================================================* 134 | gpurun: bsr gpuload ;load if not already loaded 135 | 136 | movem.l d0-d1/a0,-(sp) ; save GPU address for restore 137 | 138 | move.l (a0)+,G_PC ; load GPU PC 139 | 140 | move.l #$11,G_CTRL ; Turn on the GPU 141 | 142 | movem.l (sp)+,a0/d0-d1 ; restore GPU address 143 | rts 144 | 145 | ;*======================================================================* 146 | ;* gpuwait() - wait for the GPU to finish executing 147 | ;* 148 | ;* input: 149 | ;* None 150 | ;* 151 | ;* preserved: 152 | ;* d0 153 | ;* a0 154 | ;*======================================================================* 155 | gpuwait: movem.l a0/d0,-(sp) 156 | 157 | lea G_CTRL,a0 158 | .gpuwt: ; wait for GPU to finish 159 | move.l (a0),d0 160 | btst #0,d0 161 | bne .gpuwt 162 | 163 | movem.l (sp)+,a0/d0 164 | rts 165 | 166 | 167 | 168 | ; 169 | ; CONSTANT DATA (GPU PROGRAMS) 170 | ; 171 | fastvector: 172 | .include "llama.dat" 173 | xvector: 174 | .include "goat.dat" 175 | demons: 176 | .include "antelope.dat" 177 | parrot: 178 | .include "camel.dat" 179 | xparrot: 180 | .include "xcamel.dat" 181 | texter: 182 | .include "stoat.dat" 183 | bovine: 184 | .include "ox.dat" 185 | equine: 186 | .include "horse.dat" 187 | equine2: 188 | .include "donky.dat" 189 | 190 | .data 191 | 192 | lastloaded: dc.l 0 193 | 194 | ;*======================================================================* 195 | ;* EOF * 196 | ;*======================================================================* 197 | 198 | -------------------------------------------------------------------------------- /orig/t2k.jag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/orig/t2k.jag -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | ``` 2 | Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | 4 | 5 | 6 | === 7 | ====== 8 | ======== 9 | ========= === 10 | =========== ======= 11 | ============= ========== 12 | === =========== ======== ==== 13 | ================ ================ 14 | =============== ================== 15 | === ========== =========== === 16 | ================ =================== 17 | ================ =================== 18 | === ======== ========== === 19 | ================== ================== 20 | === ========== ======= = === 21 | === ====== === ========= ======= === 22 | ============= ======= ==== ======= 23 | =========== ==== == === === 24 | ===== == == ==== === 25 | ==== == === ====== 26 | === == === === 27 | ===== === === 28 | === ===== 29 | =========== 30 | ======= 31 | 32 | Fig 1. Ascii rendering of the 'distorted W' web used in level 6 of Tempest 2000. 33 | 34 | This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 35 | who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 36 | Collection': 37 | https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 38 | 39 | This is a cleaned-up and commented version of the source code file 'yakgpu.s'. 40 | 41 | No code has been changed, so these source files can be used to create a build 42 | of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 43 | ``` 44 | -------------------------------------------------------------------------------- /src/afont.s: -------------------------------------------------------------------------------- 1 | ; ************************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; _^/|)i%%%%%ii|"^, `_,;>i%%%%%%%%%%%i)\";` _;"\))%%%%%%vii^, 5 | ; .:\Iz5qbYbbbbbYYgmzt\+. ``*zVXbbbbbbbbbbbggE5jl\-. ._\s7p4bYbbbbbO8YYCu\/. 6 | ; `_|r#2h5y#T77777n#yygm#1";`. ``zVJTTn7zz777777zu3w##Ji|`` `_|c2Fh5y##z7777uTwy233u<+.. 7 | ; _^tLmu1*sll{{{{{rls{1o6Ct>-. ``7go1I*lllr{{{{slrs*}t7LL'_ _,1zgJ1Isll{{{{{srss*}jup?`. 8 | ; -/qJI{lx%{{*?e]**{c%lrIoS{`. ``15!*rlxl***1a}*{s%crrr1t'_ -;6wI*lc%{*?!7a?[t*s}I}[f*`. 9 | ; _+2jxcxx%LL{*]IseTr%xxc]Fl`. ``?C*rxx%I#1s?!{*no%xxlrrl'_ _;3uccxx%to'_--`=)))>[]_'___re%>))>le>-. `-la%>))>laIrI?sst?>)))>a7'_ _:t?>)))>azzo}II[t#wF5nz?)_. 14 | ; _;[{\<<<\\\)v!\_. `_%!>\\\\_- _'iv{cv>)%%%%%%vii^; ,^\".. .`;"o3qSyf#n77777T#yy232}>'` 22 | ; .`[hz1I}lllr{{{{{rrs{}tzuT;_ _'1oSf[Islls{{{{srsr{*juFt`` .->tfSo1{slr{{{{{rrs{{[jCF/- 23 | ; .`I5[*rlxc*}?a7!?*{%cl?tJ3;_ _'FyI*lc%s{*}a1{?1}s}II!w]`` .`{SoIrl%c{**]eI*[[s{II*zw+_ 24 | ; .`{wIlxx%sjc`--_'ot%xxcczJ;_ _'f#ccxx%on[!!!!{%lr![sl\/_` .`lF]cxx%rT7!!!!!cxr{1Isi\:_ 25 | ; .`cjrv%%vrjc`. -'otv%%%v[7,_ _'u7v%%%v]a6SEEgmwr"_`....`. .-%J}v%%%cangVEEEwT"+``...`` 26 | ; .-czliiiico%-. _'t[iiii)[o,_ _'e1iiiiivvll**Iz6?i'- .-)zriiiiiv%ls{I?yyv<-` 27 | ; .-x7liiiicev`. `-1!iiii)]e,_ _'a1)iviilsrrllrcv\")\/=''_` .-)7riiiivss*{{**vi'_ 28 | ; .-%ex>))>xa?l*Irrt]>)))>?t:_ _'1[ii>>>?t??II?]1nw5FTL?%-` .->el>))>%el-_---`` 29 | ; ._i1v<<<vc{vi'_ -_\)!{v)<<!%_` 31 | ; ._>?lxllllllccccl?!oea{v^_. .',iraao]?lcccc{?tottv>_-. ._/cxxllxxx\_` 32 | ; ._^"vxIIIIIIIIIII?}ci";- -:")c*?IIIIII?rc)"-` ._;/ix}Ixv/=_` 33 | ; 34 | ; Fig 1. Ascii rendering of sample characters from afont.s 35 | ; 36 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 37 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 38 | ; Collection': 39 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 40 | ; 41 | ; This is a cleaned-up and commented version of the source code file 'afont.s'. 42 | ; 43 | ; No code has been changed, so this source file can be used to create a build 44 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 45 | ; 46 | ; All original variable and routine names are preserved. The changes include: 47 | ; - Fixed up indentation. 48 | ; - Added comments and routine headers. 49 | ; 50 | ; The home of this file and the rest of the Tempest 2000 source code is: 51 | ; https://github.com/mwenge/tempest2k 52 | ; 53 | ; 54 | ; "Page 2 font, by Joby" 55 | ; afont.s consists of addresses into the data in pic2. pic2 (beasty4.cry) contains a spritesheet 56 | ; of characters for the font. 57 | ; 58 | ; ************************************************************************************** 59 | 60 | afont: 61 | dc.l pic2 ; beasty4.cry 62 | dc.l $0012000f 63 | 64 | dc.l $b6011e ; Space 65 | dc.l $b600d2 ; ! 66 | dc.l $a40001 ; " 67 | dc.l $a40001 ; # 68 | dc.l $a40001 ; $ 69 | dc.l $a40001 ; % 70 | dc.l $a40001 ; & 71 | dc.l $a40001 ; ' 72 | dc.l $9100a5 ; ( 73 | dc.l $9100ba ; ) 74 | dc.l $a40001 ; * 75 | dc.l $a40001 ; + 76 | dc.l $b600f8 ; , 77 | dc.l $b6010b ; - 78 | dc.l $b600c2 ; . 79 | dc.l $a40001 ; / 80 | dc.l $910000 ; 0 81 | dc.l $910010 ; 1 82 | dc.l $910020 ; 2 83 | dc.l $910030 ; 3 84 | dc.l $910040 ; 4 85 | dc.l $910050 ; 5 86 | dc.l $910060 ; 6 87 | dc.l $910070 ; 7 88 | dc.l $910080 ; 8 89 | dc.l $910090 ; 9 90 | dc.l $b600e5 ; : 91 | dc.l $a40001 ; 92 | dc.l $a40001 ; < 93 | dc.l $a40001 ; = 94 | dc.l $a40001 ; > 95 | dc.l $a40001 ; ? 96 | dc.l $a40001 ; @ 97 | dc.l $a40001 ; A 98 | dc.l $a40014 ; B 99 | dc.l $a40027 ; C 100 | dc.l $a4003a ; D 101 | dc.l $a4004d ; E 102 | dc.l $a40060 ; F 103 | dc.l $a40073 ; G 104 | dc.l $a40086 ; H 105 | dc.l $a40099 ; I 106 | dc.l $a400ac ; J 107 | dc.l $a400bf ; K 108 | dc.l $a400d2 ; L 109 | dc.l $a400e5 ; M 110 | dc.l $a400f8 ; N 111 | dc.l $a4010b ; O 112 | dc.l $a4011e ; P 113 | dc.l $b60001 ; Q 114 | dc.l $b60014 ; R 115 | dc.l $b60027 ; S 116 | dc.l $b6003a ; T 117 | dc.l $b6004d ; U 118 | dc.l $b60060 ; V 119 | dc.l $b60073 ; W 120 | dc.l $b60086 ; X 121 | dc.l $b60099 ; Y 122 | dc.l $b600ac ; Z 123 | dc.l $a40001 ; [ 124 | dc.l $a40001 ; \ 125 | dc.l $a40001 ; ] 126 | dc.l $a40001 ; ^ 127 | dc.l $a40001 ; _ 128 | dc.l $a40001 ; ` 129 | dc.l $a40001 ; a 130 | dc.l $a40014 ; b 131 | dc.l $a40027 ; c 132 | dc.l $a4003a ; d 133 | dc.l $a4004d ; e 134 | dc.l $a40060 ; f 135 | dc.l $a40073 ; g 136 | dc.l $a40086 ; h 137 | dc.l $a40099 ; i 138 | dc.l $a400ac ; j 139 | dc.l $a400bf ; k 140 | dc.l $a400d2 ; l 141 | dc.l $a400e5 ; m 142 | dc.l $a400f8 ; n 143 | dc.l $a4010b ; o 144 | dc.l $a4011e ; p 145 | dc.l $b60001 ; q 146 | dc.l $b60014 ; r 147 | dc.l $b60027 ; s 148 | dc.l $b6003a ; t 149 | dc.l $b6004d ; u 150 | dc.l $b60060 ; v 151 | dc.l $b60073 ; w 152 | dc.l $b60086 ; x 153 | dc.l $b60099 ; y 154 | dc.l $b600ac ; z 155 | dc.l $a40001 ; { 156 | dc.l $a40001 ; | 157 | dc.l $a40001 ; } 158 | dc.l $a40001 ; ~ 159 | dc.l $a40001 ; DEL 160 | ; vim:ft=asm68k ts=2 161 | -------------------------------------------------------------------------------- /src/bfont.s: -------------------------------------------------------------------------------- 1 | ; ************************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; ^^+)ir!1[]!]1e7L#C#uz7LTLeIx?77!)\||)|||"//+=====^^=+|sjJz*^ "/-%fJ{<<<\\\)|||"//+=====^^=+|sjJz*^ "/-i>?77!)\||)|||"//+=====^^^;;;,;eL\ 7 | ; oo?v")<>vxxxclrs{ssrcx%%)=^;"t7T> "/-%nLs>>>ccr{sxclrs{ssrcx%%)=^;"t7T> "/-veo?v")<>vxxxclrs{ssrcx%vvvviix]T) 8 | ; zoc\<<%lci<"||)))))|"|>x{x|^^)#6% "/-voel<<%sx|^^)#6% "/-v7oc\<<%lci<"||)))))|""""""/"||)v^ 9 | ; a!%<\:_```...````_:=s]>;;=yVl "/-v1]%<\)|\*[oo1?*r{II{rlrrlrrr|,:=S4c "/-vrx>)|\*[oo1!}r{II{rlrrc)<^;/v[z!+ "/-vrx>)|\tL< 12 | ; %%<|||//+===^^^;;;,,,::::::::^mq% "/-v%%<|||//+===^^^;;;,,,::::,=<<>><\<)x*)'';33) "/-ivr)|"|Isx%v%%vi><<>><\\\=,::+ljo| "/-ivr)|")j7) 14 | ; rIi"/|ttv+///++===+====|aTv__,#T< "/-vlIi"/|aav+///++===+=^/)<)>='_:##< "/-vlIi"/|te| 15 | ; }1%//"[7<``````````````'Jmr-_:7L\ "/-v*t%//"[7) ... .,%{*"__'zj\ "/-v}t%//"!7r= 16 | ; 17x+=/ej\ _mE{`-'a#> "/-v[7x+="j6m6p5pp2yw#LjuT##oc^-')eo| "/-v]ol"++>{eJ55pp5yw#Ljunje1???I?I?/ 17 | ; ouc==/en< _Shl``_L2v "/-venc==+r[o7o1oooa1[!}}{li^``,\I!r^ "/-vxI}%"=;="%!toooa1[!}*I?*rc%vvcn5v 18 | ; uj%==/7j\ -ywi--:j5% "/-%Lj%==^;,::::'''____---`-^/<%s{%"_ "/-i+irrcv<"=,::'''____---````..._JSc 19 | ; t?%<><\\\<\\\\<>iv%x%vvx%%i|=^- "/-i',/<%clcvi><\\\\<>iv%x%viii%cltfv 20 | ; 21 | ; |?eat]!!!!!]][tojTJJTj7jnu7[r)|= /).\|^=">>%lls{{srrs{ssrlx%%>/=^,*oL1 _).|!7tr||\^^+15n _).|]z!\<|"|)))))||""""""/"|)>< _).|]z!\<|"|)))))||""""""/"|)>< 26 | ; )?1{<\\%Is`-----------_:^v?*;;,tgw _).)?1{<<\%I{;'-```..````````---___'' _).)?1{<<\%I{;'-```..````````---___'' 27 | ; ){Ic\\)rtI .-vt?,;:7Ef _).){Ic\\)s7To1I{s*?}srrrrl%; _).){Ic\\)s7To1I{s*?}srrrrl%; 28 | ; )lli))|*z[ xj1,,'jgJ _).)lli))|x!t7t]I{r*I*rllr1t" _).)lli))|x!t7t]I{r*I*rllr1t" 29 | ; )%%i||"?u[ l#o::'7hL _).)%%i|||"/++===^;;;;,,,,}e) _).)%%i|||"/++===^;;;;,,,,}e) 30 | ; \vxc||"?L} *3u''_tpo _).\vxc||"lIc%v%%vi><<>>>\l[| _).\vxc||"lIc%v%%vi><<>>>\l[| 31 | ; )c*{""/{o* !mT_'-!w[ _).)c*{""/*oI=+//++===+///"<, _).)c*{""/*oI+///++===+///"<, 32 | ; )r]?//+roI ./e3a__`{u? _).)r[?//+let<'. ...``-. _).)r]?//+ro!```````````--_'` 33 | ; )}o[++=IyS66666F3fJnjLT#Ju!<--=}7* _).)*e[|+=)c[u35FpFyfJujjnLot!?!II??c _).)}o[++=*j! 34 | ; |!La===i?a7777ooe11]I*}r%"_`'+r!}> _).\%{?r)+^^/<}[eooe11]I*}?}sl%vv%ayL _).|!La===*u1 35 | ; |1u]===;,::::''''___----`:+)il{l<; _).\|)lsl%>)/;::''''___----````.. ?6# _).|1u]==^*L? 36 | ; )}I%<<>>><\\\\\\\<<)i%xxvv%x%v\/^, _).\+:^)vxll%i><\\\\<<)i%xx%iiivcx?nj _).|I[{><>r!{ 37 | ; \|^;^^^^^^^^^^^^^^^^========//=;_ _).<;.-',;^^^^^^^^^^^^^=====^^==///)) _).\)=^^=+/)| 38 | ; 39 | ; Fig 1. Ascii rendering of sample characters from bfont.s 40 | ; 41 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 42 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 43 | ; Collection': 44 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 45 | ; 46 | ; This is a cleaned-up and commented version of the source code file 'afont.s'. 47 | ; 48 | ; No code has been changed, so this source file can be used to create a build 49 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 50 | ; 51 | ; All original variable and routine names are preserved. The changes include: 52 | ; - Fixed up indentation. 53 | ; - Added comments and routine headers. 54 | ; 55 | ; The home of this file and the rest of the Tempest 2000 source code is: 56 | ; https://github.com/mwenge/tempest2k 57 | ; 58 | ; bfont.s consists of addresses into the data in pic6 (beasty8.cry). pic6 contains a spritesheet 59 | ; of characters for the font. 60 | ; ************************************************************************************** 61 | * 62 | * 63 | * Page 6 font, 32x32, by Joby 64 | 65 | bfont: 66 | dc.l pic6 ; beasty8.cry 67 | dc.l $001f001b 68 | 69 | dc.l $470119 ;Space 70 | dc.l $8d0047 ;! 71 | dc.l $470119 ;" 72 | dc.l $470119 ;# 73 | dc.l $470119 ;$ 74 | dc.l $470119 ;% 75 | dc.l $470119 ;& 76 | dc.l $470119 ;' 77 | dc.l $470119 ;( 78 | dc.l $470119 ;) 79 | dc.l $8d008d ;* 80 | dc.l $470119 ;+ 81 | dc.l $b600f8 ;, 82 | dc.l $8d006a ;- 83 | dc.l $8d0024 ;. 84 | dc.l $470119 ;/ 85 | dc.l $6a0001 ;0 86 | dc.l $6a0024 ;1 87 | dc.l $6a0047 ;2 88 | dc.l $6a006a ;3 89 | dc.l $6a008d ;4 90 | dc.l $6a00b0 ;5 91 | dc.l $6a00d3 ;6 92 | dc.l $6a00f6 ;7 93 | dc.l $6a0119 ;8 94 | dc.l $8d0001 ;9 95 | dc.l $b600e5 ;: 96 | dc.l $470119 ;; 97 | dc.l $470119 ;< 98 | dc.l $470119 ;= 99 | dc.l $470119 ;> 100 | dc.l $8d00b0 ;? 101 | dc.l $470119 ;@ 102 | dc.l $010001 ;A 103 | dc.l $010024 ;B 104 | dc.l $010047 ;C 105 | dc.l $01006a ;D 106 | dc.l $01008d ;E 107 | dc.l $0100b0 ;F 108 | dc.l $0100d3 ;G 109 | dc.l $0100f6 ;H 110 | dc.l $010119 ;I 111 | dc.l $240001 ;J 112 | dc.l $240024 ;K 113 | dc.l $240047 ;L 114 | dc.l $24006a ;M 115 | dc.l $24008d ;N 116 | dc.l $2400b0 ;O 117 | dc.l $2400d3 ;P 118 | dc.l $2400f6 ;Q 119 | dc.l $240119 ;R 120 | dc.l $470001 ;S 121 | dc.l $470024 ;T 122 | dc.l $470047 ;U 123 | dc.l $47006a ;V 124 | dc.l $47008d ;W 125 | dc.l $4700b0 ;X 126 | dc.l $4700d3 ;Y 127 | dc.l $4700f6 ;Z 128 | dc.l $470119 ;[ 129 | dc.l $470119 ;\ 130 | dc.l $470119 ;] 131 | dc.l $470119 ;^ 132 | dc.l $470119 ;_ 133 | dc.l $470119 ;` 134 | dc.l $010001 ;A 135 | dc.l $010024 ;B 136 | dc.l $010047 ;C 137 | dc.l $01006a ;D 138 | dc.l $01008d ;E 139 | dc.l $0100b0 ;F 140 | dc.l $0100d3 ;G 141 | dc.l $0100f6 ;H 142 | dc.l $010119 ;I 143 | dc.l $240001 ;J 144 | dc.l $240024 ;K 145 | dc.l $240047 ;L 146 | dc.l $24006a ;M 147 | dc.l $24008d ;N 148 | dc.l $2400b0 ;O 149 | dc.l $2400d3 ;P 150 | dc.l $2400f6 ;Q 151 | dc.l $240119 ;R 152 | dc.l $470001 ;S 153 | dc.l $470024 ;T 154 | dc.l $470047 ;U 155 | dc.l $47006a ;V 156 | dc.l $47008d ;W 157 | dc.l $4700b0 ;X 158 | dc.l $4700d3 ;Y 159 | dc.l $4700f6 ;Z 160 | dc.l $470119 ;{ 161 | dc.l $470119 ;| 162 | dc.l $470119 ;} 163 | dc.l $470119 ;~ 164 | dc.l $470119 ;DEL 165 | ; vim:ft=asm68k ts=2 166 | -------------------------------------------------------------------------------- /src/cfont.s: -------------------------------------------------------------------------------- 1 | ; ************************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; -'''''''''''''''''''''''''''''''''''''''''''''''''''''' -'''''''''''''''''''''''''''''''''''''''''''''''''''''' 5 | ; -'''''''''''''''''''''''''''''''''''''''''''''''''''''' -'''''''''''''''''''''''''''''''''''''''''''''''''''''' 6 | ; -'''',%%%%ij2333ywwwwfTLuuujeeeeettttt{"||||-````-''''' -''''=yyyyy33333ywwwwfTLuuujeeeeettttt{"||||-````-''''' 7 | ; -'''';!!!!}XRNNNWKKKKKkGGGZXSSSSS6ppp6u>iiii` `''''' -''''|WWWWWNNNNNWKKKKKkGGGZXSSSSS6ppp6u>iiii` `''''' 8 | ; -''''^uuuujXDKKKKUUUUUZXXXXEqSSSSF5FFFucllll_````-''''' -''''|DDDDDHKKKKKUUUUUZXXXXEqSSSSF5FFFucllll_````-''''' 9 | ; -''''|MMMMMUkkkkkOOOOAX4444dggggh53222fTTTTT";^^^,''''' -''''|MMMMMUkkkkkOOOOAX4444dggggh53222fTTTTT";^^^,''''' 10 | ; -''''|MMMMMUkkkkkAAAAAX44444ghhhh53222fTTTTT";^^^,''''' -''''|MMMMMUkkkkkAAAAAX44444ghhhh53222fTTTTT";^^^,''''' 11 | ; -''''|DDDDD$&&&8PI????I}}}}}****{#yyyyCuuuuui<<<>/''''' -''''|DDDDD$&&&8PI????I}}}}}****{#yyyyCuuuuui<<<>/''''' 12 | ; -''''"KKKKK$888$g|\\\\<<<<<<<<<<\nyfffCLuuuuxiiiv"''''' -''''"KKKKK$888$g|\\\\<<<<<<<<<<\nyfffCunnnnxiiiv"''''' 13 | ; -''''"@@@@@8AAA&Ptaaaa1[[[[[]]]]!TwCCw#jjjjj%)iii"''''' -''''"@@@@@8AAA&Ptaaaa1[[[[[]]]]!TwCCwu][[[[v)iii"''''' 14 | ; -''''"&&&&&OYYYkbEggggS66666FFFFFJT###u77777%)iii"''''' -''''"&&&&&OYYYkbEggggS66666FFFFFJT##Jt<>>>>iiiiv"''''' 15 | ; -''''"&&&&&OYYYkZSggggF33333fffff#TTT#uo7777%)iii"''''' -''''"&&&&&OYYYkZSggggF33333fffff#TTTJaivvvv>>>>)/''''' 16 | ; -''''/YYYYYZPPPZg%xxxxx%xxx%%%%%%7TnnTjtttttviiii"''''' -''''/YYYYYZPPPZg%xxxxx%xxx%%%%%%7TnnTz[1111'....-''''' 17 | ; -''''/YYYYYGPPPGS>))))iiiiiiiiii)7TnnTjtttttviiii"''''' -''''/YYYYYGPPPGS\<<<<>>>>>>>>>><7TnnTjttttt- `''''' 18 | ; -''''/GGGGPXEEEXm>iiii+;;;;;;;;;,[j77ze[[[[[viiii"''''' -''''/GGGGPXEEEghzjjjj7ooooe111117z77ze[[[[[|////^''''' 19 | ; -''''/XXXXXE444Ep>iiiv' Ieaaet]]]]]viiii"''''' -''''/XXXXXE4444dmmmmm52222yJJJJJoaaaet]]]]]%vvv%|''''' 20 | ; -''''/ggggE4ddd4F>iiiv' ?oeee1!!!!!viiii"''''' -''''/ggggE4ddddhFFFFp3fyyywnnnnToaeee1IIIII)<<<>/''''' 21 | ; -''''/VVVVhgSSSg2>iiiv' Ieaae[*****viiii"''''' -''''/VVVVhgSSSgq32222fCCCw#7zzzzeaaae?)iiii=;^^^,''''' 22 | ; -''''/VVVVVhgggh2>iiiv' ?oeee[*****viiii"''''' -''''/VVVVVhggggq22222fCwww#zzzzzeaeee?)iiii=^^^^,''''' 23 | ; -'''':|||||x****siiiiv' :;;;;"%%%%%iiiii"''''' -'''':|||||x*****sssssrrrrrrcccccccccc)=++++-````-''''' 24 | ; -''''_ /iii)ivvvvv' ,viiiivvvvv|''''' -''''_ /iiiiiiiiiiiiiiiiiiiiiiiiiv\;^^^^. `''''' 25 | ; `----- ;//////////- _//////////;----- `----- ;//////////////////////////^''''' .----- 26 | ; 27 | ; 28 | ; 29 | ; Fig 1. Ascii rendering of 'A' and 'B' in cfont. 30 | ; 31 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 32 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 33 | ; Collection': 34 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 35 | ; 36 | ; This is a cleaned-up and commented version of the source code file 'afont.s'. 37 | ; 38 | ; No code has been changed, so this source file can be used to create a build 39 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 40 | ; 41 | ; All original variable and routine names are preserved. The changes include: 42 | ; - Fixed up indentation. 43 | ; - Added comments and routine headers. 44 | ; 45 | ; The home of this file and the rest of the Tempest 2000 source code is: 46 | ; https://github.com/mwenge/tempest2k 47 | ; 48 | ; cfont.s consists of addresses into the data in pic. pic contains a spritesheet 49 | ; of characters for the font. 50 | ; ************************************************************************************** 51 | * 52 | * 53 | * Page 1 font, 8x8, by Joby 54 | 55 | cfont: 56 | ; beasty3-trunc.cry 57 | dc.l pic 58 | dc.l $00080008 59 | 60 | dc.l $b50137 ;Space 61 | dc.l $9e0026 ;! 62 | dc.l $b50137 ;" 63 | dc.l $b50137 ;# 64 | dc.l $b50137 ;$ 65 | dc.l $b50137 ;% 66 | dc.l $b50137 ;& 67 | dc.l $9e0047 ;' 68 | dc.l $9e0052 ;( 69 | dc.l $9e005d ;) 70 | dc.l $b50137 ;* 71 | dc.l $b50137 ;+ 72 | dc.l $9e003c ;, 73 | dc.l $9e0068 ;- 74 | dc.l $9e001b ;. 75 | dc.l $b50137 ;/ 76 | dc.l $a9001b ;0 77 | dc.l $a90026 ;1 78 | dc.l $a90031 ;2 79 | dc.l $a9003c ;3 80 | dc.l $a90047 ;4 81 | dc.l $a90052 ;5 82 | dc.l $a9005d ;6 83 | dc.l $a90068 ;7 84 | dc.l $a90073 ;8 85 | dc.l $a9007e ;9 86 | dc.l $9e0031 ;: 87 | dc.l $9b0031 ;; 88 | dc.l $b50137 ;< 89 | dc.l $b50137 ;= 90 | dc.l $b50137 ;> 91 | dc.l $b50137 ;? 92 | dc.l $b50137 ;@ 93 | dc.l $b5001b ;A 94 | dc.l $b50026 ;B 95 | dc.l $b50031 ;C 96 | dc.l $b5003c ;D 97 | dc.l $b50047 ;E 98 | dc.l $b50052 ;F 99 | dc.l $b5005d ;G 100 | dc.l $b50068 ;H 101 | dc.l $b50073 ;I 102 | dc.l $b5007e ;J 103 | dc.l $b50089 ;K 104 | dc.l $b50094 ;L 105 | dc.l $b5009f ;M 106 | dc.l $b500aa ;N 107 | dc.l $b500b5 ;O 108 | dc.l $b500c0 ;P 109 | dc.l $b500cb ;Q 110 | dc.l $b500d6 ;R 111 | dc.l $b500e1 ;S 112 | dc.l $b500ec ;T 113 | dc.l $b500f7 ;U 114 | dc.l $b50102 ;V 115 | dc.l $b5010d ;W 116 | dc.l $b50118 ;X 117 | dc.l $b50123 ;Y 118 | dc.l $b5012e ;Z 119 | dc.l $b50137 ;[ 120 | dc.l $b50137 ;\ 121 | dc.l $b50137 ;] 122 | dc.l $b50137 ;^ 123 | dc.l $b50137 ;_ 124 | dc.l $b50137 ;` 125 | dc.l $bf001b ;A 126 | dc.l $bf0026 ;B 127 | dc.l $bf0031 ;C 128 | dc.l $bf003c ;D 129 | dc.l $bf0047 ;E 130 | dc.l $bf0052 ;F 131 | dc.l $bf005d ;G 132 | dc.l $bf0068 ;H 133 | dc.l $bf0073 ;I 134 | dc.l $bf007e ;J 135 | dc.l $bf0089 ;K 136 | dc.l $bf0094 ;L 137 | dc.l $bf009f ;M 138 | dc.l $bf00aa ;N 139 | dc.l $bf00b5 ;O 140 | dc.l $bf00c0 ;P 141 | dc.l $bf00cb ;Q 142 | dc.l $bf00d6 ;R 143 | dc.l $bf00e1 ;S 144 | dc.l $bf00ec ;T 145 | dc.l $bf00f7 ;U 146 | dc.l $bf0102 ;V 147 | dc.l $bf010d ;W 148 | dc.l $bf0118 ;X 149 | dc.l $bf0123 ;Y 150 | dc.l $bf012e ;Z 151 | dc.l $b50137 ;{ 152 | dc.l $b50137 ;| 153 | dc.l $b50137 ;} 154 | dc.l $b50137 ;~ 155 | dc.l $b50137 ;DEL 156 | ; vim:ft=asm68k ts=2 157 | -------------------------------------------------------------------------------- /src/dat/afont.dat: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 2 font, by Joby 4 | 5 | dc.l pic2 6 | dc.l $0012000f 7 | 8 | dc.l $b6011e ;Space 9 | dc.l $b600d2 ;! 10 | dc.l $a40001 ;" 11 | dc.l $a40001 ;# 12 | dc.l $a40001 ;$ 13 | dc.l $a40001 ;% 14 | dc.l $a40001 ;& 15 | dc.l $a40001 ;' 16 | dc.l $a40001 ;( 17 | dc.l $a40001 ;) 18 | dc.l $a40001 ;* 19 | dc.l $a40001 ;+ 20 | dc.l $b600f8 ;, 21 | dc.l $b6010b ;- 22 | dc.l $b600c2 ;. 23 | dc.l $a40001 ;/ 24 | dc.l $910000 ;0 25 | dc.l $910010 ;1 26 | dc.l $910020 ;2 27 | dc.l $910030 ;3 28 | dc.l $910040 ;4 29 | dc.l $910050 ;5 30 | dc.l $910060 ;6 31 | dc.l $910070 ;7 32 | dc.l $910080 ;8 33 | dc.l $910090 ;9 34 | dc.l $b600e5 ;: 35 | dc.l $a40001 ;; 36 | dc.l $a40001 ;< 37 | dc.l $a40001 ;= 38 | dc.l $a40001 ;> 39 | dc.l $a40001 ;? 40 | dc.l $a40001 ;@ 41 | dc.l $a40001 ;A 42 | dc.l $a40014 ;B 43 | dc.l $a40027 ;C 44 | dc.l $a4003a ;D 45 | dc.l $a4004d ;E 46 | dc.l $a40060 ;F 47 | dc.l $a40073 ;G 48 | dc.l $a40086 ;H 49 | dc.l $a40099 ;I 50 | dc.l $a400ac ;J 51 | dc.l $a400bf ;K 52 | dc.l $a400d2 ;L 53 | dc.l $a400e5 ;M 54 | dc.l $a400f8 ;N 55 | dc.l $a4010b ;O 56 | dc.l $a4011e ;P 57 | dc.l $b60001 ;Q 58 | dc.l $b60014 ;R 59 | dc.l $b60027 ;S 60 | dc.l $b6003a ;T 61 | dc.l $b6004d ;U 62 | dc.l $b60060 ;V 63 | dc.l $b60073 ;W 64 | dc.l $b60086 ;X 65 | dc.l $b60099 ;Y 66 | dc.l $b600ac ;Z 67 | dc.l $a40001 ;[ 68 | dc.l $a40001 ;\ 69 | dc.l $a40001 ;] 70 | dc.l $a40001 ;^ 71 | dc.l $a40001 ;_ 72 | dc.l $a40001 ;` 73 | dc.l $a40001 ;a 74 | dc.l $a40014 ;b 75 | dc.l $a40027 ;c 76 | dc.l $a4003a ;d 77 | dc.l $a4004d ;e 78 | dc.l $a40060 ;f 79 | dc.l $a40073 ;g 80 | dc.l $a40086 ;h 81 | dc.l $a40099 ;i 82 | dc.l $a400ac ;j 83 | dc.l $a400bf ;k 84 | dc.l $a400d2 ;l 85 | dc.l $a400e5 ;m 86 | dc.l $a400f8 ;n 87 | dc.l $a4010b ;o 88 | dc.l $a4011e ;p 89 | dc.l $b60001 ;q 90 | dc.l $b60014 ;r 91 | dc.l $b60027 ;s 92 | dc.l $b6003a ;t 93 | dc.l $b6004d ;u 94 | dc.l $b60060 ;v 95 | dc.l $b60073 ;w 96 | dc.l $b60086 ;x 97 | dc.l $b60099 ;y 98 | dc.l $b600ac ;z 99 | dc.l $a40001 ;{ 100 | dc.l $a40001 ;| 101 | dc.l $a40001 ;} 102 | dc.l $a40001 ;~ 103 | dc.l $a40001 ;DEL 104 | -------------------------------------------------------------------------------- /src/dat/bfont.dat: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 6 font, 32x32, by Joby 4 | 5 | dc.l pic6 6 | dc.l $001f001b 7 | 8 | dc.l $470119 ;Space 9 | dc.l $8d0047 ;! 10 | dc.l $470119 ;" 11 | dc.l $470119 ;# 12 | dc.l $470119 ;$ 13 | dc.l $470119 ;% 14 | dc.l $470119 ;& 15 | dc.l $470119 ;' 16 | dc.l $470119 ;( 17 | dc.l $470119 ;) 18 | dc.l $8d008d ;* 19 | dc.l $470119 ;+ 20 | dc.l $b600f8 ;, 21 | dc.l $8d006a ;- 22 | dc.l $8d0024 ;. 23 | dc.l $470119 ;/ 24 | dc.l $6a0001 ;0 25 | dc.l $6a0024 ;1 26 | dc.l $6a0047 ;2 27 | dc.l $6a006a ;3 28 | dc.l $6a008d ;4 29 | dc.l $6a00b0 ;5 30 | dc.l $6a00d3 ;6 31 | dc.l $6a00f6 ;7 32 | dc.l $6a0119 ;8 33 | dc.l $8d0001 ;9 34 | dc.l $b600e5 ;: 35 | dc.l $470119 ;; 36 | dc.l $470119 ;< 37 | dc.l $470119 ;= 38 | dc.l $470119 ;> 39 | dc.l $8d00b0 ;? 40 | dc.l $470119 ;@ 41 | dc.l $010001 ;A 42 | dc.l $010024 ;B 43 | dc.l $010047 ;C 44 | dc.l $01006a ;D 45 | dc.l $01008d ;E 46 | dc.l $0100b0 ;F 47 | dc.l $0100d3 ;G 48 | dc.l $0100f6 ;H 49 | dc.l $010119 ;I 50 | dc.l $240001 ;J 51 | dc.l $240024 ;K 52 | dc.l $240047 ;L 53 | dc.l $24006a ;M 54 | dc.l $24008d ;N 55 | dc.l $2400b0 ;O 56 | dc.l $2400d3 ;P 57 | dc.l $2400f6 ;Q 58 | dc.l $240119 ;R 59 | dc.l $470001 ;S 60 | dc.l $470024 ;T 61 | dc.l $470047 ;U 62 | dc.l $47006a ;V 63 | dc.l $47008d ;W 64 | dc.l $4700b0 ;X 65 | dc.l $4700d3 ;Y 66 | dc.l $4700f6 ;Z 67 | dc.l $470119 ;[ 68 | dc.l $470119 ;\ 69 | dc.l $470119 ;] 70 | dc.l $470119 ;^ 71 | dc.l $470119 ;_ 72 | dc.l $470119 ;` 73 | dc.l $010001 ;A 74 | dc.l $010024 ;B 75 | dc.l $010047 ;C 76 | dc.l $01006a ;D 77 | dc.l $01008d ;E 78 | dc.l $0100b0 ;F 79 | dc.l $0100d3 ;G 80 | dc.l $0100f6 ;H 81 | dc.l $010119 ;I 82 | dc.l $240001 ;J 83 | dc.l $240024 ;K 84 | dc.l $240047 ;L 85 | dc.l $24006a ;M 86 | dc.l $24008d ;N 87 | dc.l $2400b0 ;O 88 | dc.l $2400d3 ;P 89 | dc.l $2400f6 ;Q 90 | dc.l $240119 ;R 91 | dc.l $470001 ;S 92 | dc.l $470024 ;T 93 | dc.l $470047 ;U 94 | dc.l $47006a ;V 95 | dc.l $47008d ;W 96 | dc.l $4700b0 ;X 97 | dc.l $4700d3 ;Y 98 | dc.l $4700f6 ;Z 99 | dc.l $470119 ;{ 100 | dc.l $470119 ;| 101 | dc.l $470119 ;} 102 | dc.l $470119 ;~ 103 | dc.l $470119 ;DEL 104 | -------------------------------------------------------------------------------- /src/dat/cfont.dat: -------------------------------------------------------------------------------- 1 | * 2 | * 3 | * Page 1 font, 8x8, by Joby 4 | 5 | dc.l pic 6 | dc.l $00080008 7 | 8 | dc.l $b50137 ;Space 9 | dc.l $9e0026 ;! 10 | dc.l $b50137 ;" 11 | dc.l $b50137 ;# 12 | dc.l $b50137 ;$ 13 | dc.l $b50137 ;% 14 | dc.l $b50137 ;& 15 | dc.l $9e0047 ;' 16 | dc.l $9e0052 ;( 17 | dc.l $9e005d ;) 18 | dc.l $b50137 ;* 19 | dc.l $b50137 ;+ 20 | dc.l $9e003c ;, 21 | dc.l $9e0068 ;- 22 | dc.l $9e001b ;. 23 | dc.l $b50137 ;/ 24 | dc.l $a9001b ;0 25 | dc.l $a90026 ;1 26 | dc.l $a90031 ;2 27 | dc.l $a9003c ;3 28 | dc.l $a90047 ;4 29 | dc.l $a90052 ;5 30 | dc.l $a9005d ;6 31 | dc.l $a90068 ;7 32 | dc.l $a90073 ;8 33 | dc.l $a9007e ;9 34 | dc.l $9e0031 ;: 35 | dc.l $9b0031 ;; 36 | dc.l $b50137 ;< 37 | dc.l $b50137 ;= 38 | dc.l $b50137 ;> 39 | dc.l $b50137 ;? 40 | dc.l $b50137 ;@ 41 | dc.l $b5001b ;A 42 | dc.l $b50026 ;B 43 | dc.l $b50031 ;C 44 | dc.l $b5003c ;D 45 | dc.l $b50047 ;E 46 | dc.l $b50052 ;F 47 | dc.l $b5005d ;G 48 | dc.l $b50068 ;H 49 | dc.l $b50073 ;I 50 | dc.l $b5007e ;J 51 | dc.l $b50089 ;K 52 | dc.l $b50094 ;L 53 | dc.l $b5009f ;M 54 | dc.l $b500aa ;N 55 | dc.l $b500b5 ;O 56 | dc.l $b500c0 ;P 57 | dc.l $b500cb ;Q 58 | dc.l $b500d6 ;R 59 | dc.l $b500e1 ;S 60 | dc.l $b500ec ;T 61 | dc.l $b500f7 ;U 62 | dc.l $b50102 ;V 63 | dc.l $b5010d ;W 64 | dc.l $b50118 ;X 65 | dc.l $b50123 ;Y 66 | dc.l $b5012e ;Z 67 | dc.l $b50137 ;[ 68 | dc.l $b50137 ;\ 69 | dc.l $b50137 ;] 70 | dc.l $b50137 ;^ 71 | dc.l $b50137 ;_ 72 | dc.l $b50137 ;` 73 | dc.l $bf001b ;A 74 | dc.l $bf0026 ;B 75 | dc.l $bf0031 ;C 76 | dc.l $bf003c ;D 77 | dc.l $bf0047 ;E 78 | dc.l $bf0052 ;F 79 | dc.l $bf005d ;G 80 | dc.l $bf0068 ;H 81 | dc.l $bf0073 ;I 82 | dc.l $bf007e ;J 83 | dc.l $bf0089 ;K 84 | dc.l $bf0094 ;L 85 | dc.l $bf009f ;M 86 | dc.l $bf00aa ;N 87 | dc.l $bf00b5 ;O 88 | dc.l $bf00c0 ;P 89 | dc.l $bf00cb ;Q 90 | dc.l $bf00d6 ;R 91 | dc.l $bf00e1 ;S 92 | dc.l $bf00ec ;T 93 | dc.l $bf00f7 ;U 94 | dc.l $bf0102 ;V 95 | dc.l $bf010d ;W 96 | dc.l $bf0118 ;X 97 | dc.l $bf0123 ;Y 98 | dc.l $bf012e ;Z 99 | dc.l $b50137 ;{ 100 | dc.l $b50137 ;| 101 | dc.l $b50137 ;} 102 | dc.l $b50137 ;~ 103 | dc.l $b50137 ;DEL 104 | -------------------------------------------------------------------------------- /src/dat/digits.dat: -------------------------------------------------------------------------------- 1 | 2 | DC.B $06,$60 3 | DC.L $1c38381c,$1e780ff0 4 | DC.L $03c00004,$001f0001,$80000002,$40000004 5 | DC.L $20000008,$10000010,$08000020,$04000040 6 | DC.L $02000080,$01000100,$00800200,$00400400 7 | DC.L $00200800,$00101000,$00082000,$00044000 8 | DC.L $00028000,$00014000,$00022000,$00041000 9 | DC.L $00080800,$00100400,$00200200,$00400100 10 | DC.L $00800080,$01000040,$02000020,$04000010 11 | DC.L $08000008,$10000004,$20000002,$40000001 12 | DC.L $8000ffff,$85018201,$8501ffff,$644e8aa4 13 | DC.B $aa,$e4,$aa,$a4,$64,$a4 14 | -------------------------------------------------------------------------------- /src/dat/rantab.dat: -------------------------------------------------------------------------------- 1 | 2 | ;*======================================================================* 3 | ;* 4 | ;* File: RANTAB.DAT 5 | ;* 6 | ;* Created From: RANTAB.BIN 7 | ;* BIN2DAT v1.0 Nov 19 1992 10:56:40 Andrew J Burgess 8 | ;* 9 | ;*======================================================================* 10 | 11 | DC.L $DCA9B154,$F54E554A,$2C0965A3,$C2F9F0FD 12 | DC.L $A8BF49EC,$0EF73FD2,$82820939,$BDF7BC2D 13 | DC.L $2A684411,$58223B77,$567E471A,$243AFA79 14 | DC.L $1A13DAE8,$985D6F3C,$E2E62B6C,$E01EE94F 15 | DC.L $52BC12ED,$5EEF6E99,$ADB4C445,$D9DAAED2 16 | DC.L $CEC3B79D,$B7E67225,$A7CB374B,$78E5CF79 17 | DC.L $BD6F0DE4,$7B423033,$36A25710,$078964EF 18 | DC.L $B173B210,$910B050A,$5F749D31,$9E6AC5B0 19 | DC.L $1E863FF6,$70178361,$01351C9C,$9818EAC7 20 | DC.L $1D93A043,$14AC6204,$69F6CDF0,$FC998B7A 21 | DC.L $9CEC2D35,$6114277F,$CD38000E,$D027A92A 22 | DC.L $4C948122,$32534AAF,$C1779FFB,$7EA1D813 23 | DC.L $8FF2487C,$DBBE0C1F,$8D75D50D,$C9FAB9DF 24 | DC.L $1BC68634,$85085920,$FF66BBE4,$365C7676 25 | DC.L $264E938D,$6A68D6CF,$55A67B96,$DEB318DD 26 | DC.L $4715F123,$C72E4F00,$6D928A20,$9E11087A 27 | DC.L $BA3887C3,$A24C8183,$5003D380,$54718729 28 | DC.L $605A1DA4,$C5EB2F60,$E08A30AC,$41F56305 29 | DC.L $37CAAACA,$1F3C8839,$6915F121,$E75B6EB6 30 | DC.L $DFB85E21,$0F1C51FB,$19D1BAAB,$3E1BAF06 31 | DC.L $49DD023A,$F84D8046,$319001AD,$FDA4893D 32 | DC.L $04C9B63E,$5BDBD89B,$C1BF7490,$64840B2B 33 | DC.L $5F5C9FFE,$9173E107,$4D9AC271,$E2C8D058 34 | DC.L $6BBB63A5,$E9AEA1B5,$84E5D72F,$6BE19BF3 35 | DC.L $755ADC56,$FED6E367,$A78E50CC,$C0D44342 36 | DC.L $A89257A6,$B4EABE25,$B5289794,$EE400C66 37 | DC.L $7D165145,$B2FCF4D1,$955DB052,$A348E796 38 | DC.L $E3468C41,$D3B8CBA5,$C4A0B3D7,$03EE9559 39 | DC.L $F2330F53,$70CC8E3D,$8BEBDE6D,$C8886CED 40 | DC.L $7D28407F,$7C198524,$32E82C8C,$673B1712 41 | DC.L $8F4BF378,$D4D529C6,$9AAA3423,$C097CE26 42 | DC.L $650A16F9,$D944F8AB,$0262B906,$2EF4FF72 43 | 44 | ;*======================================================================* 45 | ;* EOF * 46 | ;*======================================================================* 47 | 48 | -------------------------------------------------------------------------------- /src/dat/sines.dat: -------------------------------------------------------------------------------- 1 | 2 | ;*======================================================================* 3 | ;* 4 | ;* File: SINES.DAT 5 | ;* 6 | ;* Created From: SINES.BIN 7 | ;* BIN2DAT v1.0 Nov 19 1992 10:56:40 Andrew J Burgess 8 | ;* 9 | ;*======================================================================* 10 | 11 | DC.L $00030609,$0C0F1215,$181B1E21,$24272A2D 12 | DC.L $30333639,$3B3E4144,$46494B4E,$50535557 13 | DC.L $595C5E60,$62646667,$696B6D6E,$70717274 14 | DC.L $75767778,$797A7B7B,$7C7D7D7E,$7E7E7E7E 15 | DC.L $7E7E7E7E,$7E7E7D7D,$7C7B7B7A,$79787776 16 | DC.L $75737271,$6F6E6C6B,$69676563,$615F5D5B 17 | DC.L $59575552,$504D4B48,$4643403E,$3B383533 18 | DC.L $302D2A27,$24211E1B,$1815120F,$0C080502 19 | DC.L $00FDFAF7,$F4F0EDEA,$E7E4E1DE,$DBD8D5D2 20 | DC.L $CFCDCAC7,$C4C1BFBC,$B9B7B4B2,$B0ADABA9 21 | DC.L $A6A4A2A0,$9E9C9A98,$97959392,$908F8D8C 22 | DC.L $8B8A8988,$87868584,$84838382,$82828282 23 | DC.L $82828282,$82838383,$84858586,$8788898A 24 | DC.L $8B8D8E8F,$91929496,$97999B9D,$9FA1A3A5 25 | DC.L $A7AAACAE,$B1B3B6B8,$BBBDC0C3,$C5C8CBCE 26 | DC.L $D1D4D7D9,$DCDFE2E6,$E9ECEFF2,$F5F8FBFE 27 | DC.L $00000192,$032304B5,$064507D5,$09630AF0 28 | DC.L $0C7C0E05,$0F8C1111,$12931413,$158F1708 29 | DC.L $187D19EF,$1B5C1CC5,$1E2A1F8B,$20E6223C 30 | DC.L $238D24D9,$261F275F,$289929CC,$2AFA2C20 31 | DC.L $2D402E59,$2F6B3075,$31783273,$33663452 32 | DC.L $35353611,$36E437AE,$38703929,$39DA3A81 33 | DC.L $3B1F3BB5,$3C413CC4,$3D3D3DAD,$3E143E70 34 | DC.L $3EC43F0D,$3F4D3F83,$3FB03FD2,$3FEB3FFA 35 | DC.L $3FFF3FFA,$3FEB3FD2,$3FB03F83,$3F4D3F0D 36 | DC.L $3EC43E70,$3E143DAD,$3D3D3CC4,$3C413BB5 37 | DC.L $3B1F3A81,$39DA3929,$387037AE,$36E43611 38 | DC.L $35353452,$33663273,$31783075,$2F6B2E59 39 | DC.L $2D402C20,$2AFA29CC,$2899275F,$261F24D9 40 | DC.L $238D223C,$20E61F8B,$1E2A1CC5,$1B5C19EF 41 | DC.L $187D1708,$158F1413,$12931111,$0F8C0E05 42 | DC.L $0C7C0AF0,$096307D5,$064504B5,$03230192 43 | DC.L $0000FF6E,$FDDDFC4B,$FABBF92B,$F79DF610 44 | DC.L $F484F2FB,$F174EFEF,$EE6DECED,$EB71E9F8 45 | DC.L $E883E711,$E5A4E43B,$E2D6E175,$E01ADEC4 46 | DC.L $DD73DC27,$DAE1D9A1,$D867D734,$D606D4E0 47 | DC.L $D3C0D2A7,$D195D08B,$CF88CE8D,$CD9ACCAE 48 | DC.L $CBCBCAEF,$CA1CC952,$C890C7D7,$C726C67F 49 | DC.L $C5E1C54B,$C4BFC43C,$C3C3C353,$C2ECC290 50 | DC.L $C23CC1F3,$C1B3C17D,$C150C12E,$C115C106 51 | DC.L $C101C106,$C115C12E,$C150C17D,$C1B3C1F3 52 | DC.L $C23CC290,$C2ECC353,$C3C3C43C,$C4BFC54B 53 | DC.L $C5E1C67F,$C726C7D7,$C890C952,$CA1CCAEF 54 | DC.L $CBCBCCAE,$CD9ACE8D,$CF88D08B,$D195D2A7 55 | DC.L $D3C0D4E0,$D606D734,$D867D9A1,$DAE1DC27 56 | DC.L $DD73DEC4,$E01AE175,$E2D6E43B,$E5A4E711 57 | DC.L $E883E9F8,$EB71ECED,$EE6DEFEF,$F174F2FB 58 | DC.L $F484F610,$F79DF92B,$FABBFC4B,$FDDDFF6E 59 | 60 | ;*======================================================================* 61 | ;* EOF * 62 | ;*======================================================================* 63 | 64 | -------------------------------------------------------------------------------- /src/eeprim.s: -------------------------------------------------------------------------------- 1 | ;************************************************ 2 | ; * 3 | ; EEPROM Write & Read Primitives * 4 | ; * 5 | ;************************************************ 6 | ; 7 | ; Hi-Score on-board-cartridge EEPROM primitives 8 | ; for use by Jaguar game cartridge developers. 9 | ; 10 | ; 128 bytes (accessable as 64 words) of non-volatile 11 | ; memory are available on Jaguar game cartridges to 12 | ; preserve Hi-scores or other game status. 13 | ; Data is retained for up to 10 years, and a minimum 14 | ; of 10,000 read/write cycles is assured, according to 15 | ; product literature. 16 | ; 17 | ; 18 | ; 19 | ; 20 | ; 21 | ; Programmer: Dave Staugas 22 | ; Atari, Sunnyvale 23 | ; [408] 745-8802 24 | ; 25 | ; Last Update: 24-Sept-93 26 | ; 27 | ; 28 | ; Equates needed that may already be defined in the JAGUAR.INC file.. 29 | ; 30 | JOY1 equ $f14000 ;this we'll use as our I/O base address 31 | GPIO_0 equ $f14800 ;General purpose I/O #0 32 | GPIO_1 equ $f15000 ;General purpose I/O #1 33 | ; 34 | ; Equates derived from the above 35 | ; to allow indirect with 16-bit displacement addressing 36 | ; 37 | GPIO_0of equ GPIO_0-JOY1 ;offset to GPIO_0 (when addr reg Ax -> JOY1) 38 | GPIO_1of equ GPIO_1-JOY1 ;offset to GPIO_1 (when addr reg Ax -> JOY1) 39 | ; 40 | ; Commands specific to the National Semiconductor NM93C14 41 | ; 42 | ; 9-bit commands.. 43 | ; 876543210 44 | eREAD equ %110000000 ;read from EEPROM 45 | eEWEN equ %100110000 ;Erase/write Enable 46 | eWRITE equ %101000000 ;Write selected register 47 | eEWDS equ %100000000 ;Erase/Write disable (default) 48 | ; 49 | ; 50 | ; DO (data out) - is read on bit0 of JOY1 51 | ; DI (data in) - is written on bit0 of GPIO_0 52 | ; CS (chip select) - is pulsed low by any access to GPIO_1 53 | ; 54 | ; 55 | ;***************************************************************** 56 | ; 57 | ; Write a word to EEPROM 58 | ; 59 | ; entry: d0.w = data to be written 60 | ; d1.w = least signifigant 6 bits specify write address (0-63) 61 | ; 62 | ; exit: all preserved 63 | ; 64 | ; 65 | eewrite:: 66 | movem.l a0/d0-d4,-(sp) 67 | lea JOY1,a0 ;set ptr to EEPROM i/o addresses 68 | ; 69 | tst.w GPIO_1of(a0) ;strobe ChipSelect 70 | ; 71 | move.w #eEWEN,d2 ;erase/write enable command 72 | bsr out9bits ;send it to EEPROM 73 | ; 74 | tst.w GPIO_1of(a0) ;strobe ChipSelect 75 | ; 76 | andi.w #$3f,d1 ;force write addr to be legit (0-63) 77 | ori.w #eWRITE,d1 ;form WRITE command 78 | move.w d1,d2 79 | bsr out9bits ;send it to EEPROM 80 | ; 81 | move.w d0,d2 ;get 16-bit data word to send 82 | bsr out16bit ; & send it 83 | ; 84 | tst.w GPIO_1of(a0) ;strobe ChipSelect 85 | ; 86 | nop ;1 us required after CS for status valid 87 | nop 88 | move.w #1,d2 89 | wrwait: 90 | move.w (a0),d3 ;wait until write is complete 91 | and.w d2,d3 92 | beq wrwait 93 | ; 94 | move.w #eEWDS,d2 ;get erase/write disable command 95 | bsr out9bits ;send it 96 | ; 97 | tst.w GPIO_1of(a0) ;strobe ChipSelect 98 | ; 99 | movem.l (sp)+,a0/d0-d4 100 | rts ;we're done 101 | ; 102 | ; 103 | ; 104 | ;****************************************************** 105 | ; 106 | ; 107 | ; Read a word from EEPROM 108 | ; 109 | ; entry: d1.w = least signifigant 6 bits specify read address (0-63) 110 | ; 111 | ; exit: d0.w = data as read from EEPROM 112 | ; all other registers preserved 113 | ; 114 | eeread:: 115 | movem.l a0/d1-d4,-(sp) 116 | lea JOY1,a0 ;set ptr to EEPROM i/o address 117 | ; 118 | tst.w GPIO_1of(a0) ;strobe ChipSelect 119 | ; 120 | andi.w #$3f,d1 ;force legit read addr 121 | ori.w #eREAD,d1 122 | move.w d1,d2 123 | bsr out9bits 124 | ; 125 | moveq #0,d0 126 | moveq #15,d3 ;pick up 17 bits (1st is dummy) 127 | inlp: 128 | tst.w GPIO_0of(a0) 129 | nop 130 | move.w (a0),d1 131 | lsr.w #1,d1 132 | addx.w d0,d0 133 | nop 134 | nop 135 | nop 136 | nop 137 | nop 138 | nop 139 | dbra d3,inlp 140 | ; 141 | movem.l (sp)+,a0/d1-d4 142 | rts 143 | ; 144 | ; 145 | ; 146 | ;************************************************************** 147 | ; 148 | ; Subordinate Routines needed by "eewrite" 149 | ; 150 | ; Serial data sent to device is written to DI, bit0 of GPIO_0 151 | ; 152 | ; entry: 153 | ; a0 -> JOY1 154 | ; d2.w = 16-bit data word to write 155 | ; 156 | ; exit: 157 | ; d2.w, d3.l destroyed 158 | ; 159 | out16bit: 160 | rol.w #1,d2 ;align 1st serial data bit (bit15) to bit0 161 | moveq #15,d3 ;send 16 bits 162 | bra.s out9lp 163 | ; 164 | ; entry: 165 | ; a0 -> JOY1 166 | ; d2.w = 9-bit command to write 167 | ; 168 | out9bits: 169 | rol.w #8,d2 ;align 1st serial data bit (bit8) to bit0 170 | moveq #8,d3 ;send 9 171 | out9lp: 172 | move.w d2,GPIO_0of(a0) ;write next bit 173 | nop 174 | nop 175 | nop ;delay next write 176 | nop 177 | nop 178 | nop 179 | rol.w #1,d2 ;adjust bit0 for next datum 180 | dbra d3,out9lp ;go for all 9 or all 16 181 | rts 182 | ; 183 | ; 184 | -------------------------------------------------------------------------------- /src/gpu/ians.gas: -------------------------------------------------------------------------------- 1 | ; ************************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; ;\= 5 | ; .=ru27<` 6 | ; 'Pl 12 | ; *@@@@@#. [Ub` 13 | ; y@@@@@2_ :yHDj 14 | ; ;b@@@@@S; )XHH@| 15 | ; s$@@@@@E\;;;;;;;;;;;;;;;1UHHHh 16 | ; f@@@@@@$&&&&&&&&&&88U$@HHHHH? 17 | ; ,G@@@KKKKKKKKKKKK$AZEq3naIc<` 18 | ; r@@K$&YXhpwL1*%\=:` 19 | ; }Ix\=:` 20 | ; 21 | ; Fig 1. Ascii rendering of the 'claw'. 22 | ; 23 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 24 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 25 | ; Collection': 26 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 27 | ; 28 | ; This is a cleaned-up and commented version of the source code file 'ians.gas'. 29 | ; 30 | ; No code has been changed, so this source file can be used to create a build 31 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 32 | ; 33 | ; All original variable and routine names are preserved. 34 | ; The changes include: 35 | ; - Fixed up indentation. 36 | ; - Added comments and routine headers. 37 | ; 38 | ; The home of this file and the rest of the Tempest 2000 source code is: 39 | ; https://github.com/mwenge/tempest2k 40 | ; 41 | ; ians.gas draws a single plane of random field; inputs Nstars,Col,Xdisp,Ydisp,Rseed 42 | ; Uses the pseudorandom sequence generator Thang out of Graphix Gems. 43 | ; 44 | ; This file is not used. 45 | ; ************************************************************************************** 46 | 47 | Base equ $f00000 48 | 49 | INCLUDE "jaguar.inc" ; Jaguar General definitions 50 | 51 | in_buf EQU (D_ENDRAM-128) ;Room tp pass params to DSP 52 | 53 | ; ******************************************************************* 54 | ; starplane 55 | ; ******************************************************************* 56 | starplane: 57 | 58 | nstars REGEQU r4 59 | starcol REGEQU r5 60 | xdisp REGEQU r6 61 | ydisp REGEQU r7 62 | xseed REGEQU r8 63 | xmask REGEQU r9 64 | linesize REGEQU r10 65 | andlim REGEQU r11 66 | himask REGEQU r12 67 | lomask REGEQU r13 68 | scrbase REGEQU r14 69 | maxx REGEQU r15 70 | maxy REGEQU r16 71 | px REGEQU r17 72 | py REGEQU r18 73 | nopixl REGEQU r19 74 | starloop REGEQU r20 75 | yseed REGEQU r21 76 | ymask REGEQU r22 77 | 78 | MACRO ran ; Sequence generator out of Graphics Gems 79 | btst #0,\1 80 | jr z,\~noxortt 81 | shrq #1,\1 ; branch optimisation - the SHRQ is always done 82 | xor \2,\1 83 | \~noxortt: 84 | nop 85 | ENDM 86 | 87 | movei #in_buf,r0 88 | load (r0),nstars 89 | addq #4,r0 90 | load (r0),starcol 91 | addq #4,r0 92 | load (r0),xdisp 93 | addq #4,r0 94 | load (r0),ydisp 95 | addq #4,r0 96 | load (r0),xseed ; get parameters 97 | addq #4,r0 98 | load (r0),yseed 99 | addq #4,r0 100 | load (r0),scrbase 101 | movei #768,linesize ; size in bytes of a scanline 102 | movei #$ff,lomask ; for chopping out bytes 103 | movei #384,maxx 104 | movei #240,maxy ; clipping boundaries 105 | movei #no_pixl,nopixl ; loop address - faster than using MOVEI each time 106 | movei #star_loop,starloop ; another loop address 107 | movei #$110,xmask ; init constants 108 | movei #$b8,ymask 109 | movei #$1ff,andlim 110 | 111 | 112 | star_loop: 113 | ran xseed,xmask 114 | move xseed,px 115 | ran yseed,ymask 116 | move yseed,py ; "random" XY star position 117 | add xdisp,px 118 | add ydisp,py ; add XY offset passed in 119 | and andlim,px 120 | and lomask,py ; wrap to 0-255 121 | cmp maxx,px 122 | jump pl,(nopixl) ; clip max X 123 | cmp maxy,py ; no harm if this is done whatever 124 | jump pl,(nopixl) 125 | shlq #1,px ; x to point at words 126 | mult linesize,py ; offset in lines to bytes 127 | add px,py 128 | add scrbase,py ; py now points at pixel 129 | storew starcol,(py) ; plot the star 130 | no_pixl: 131 | subq #1,nstars 132 | jump ne,(starloop) ; loop until nstars is 0 133 | nop 134 | StopDSP: movei #D_CTRL,r1 ; point at DSP flags 135 | load (r1),r0 136 | bclr #0,r0 137 | store r0,(r1) ; stop the DSP 138 | stoploop: 139 | jr stoploop 140 | nop 141 | 142 | 143 | 144 | 145 | movei #stopgpu,r0 146 | jump (r0) 147 | nop 148 | 149 | 150 | 151 | ; vim:ft=asm68k ts=8 152 | -------------------------------------------------------------------------------- /src/images/beasty3-trunc.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty3-trunc.cry -------------------------------------------------------------------------------- /src/images/beasty3.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty3.cry -------------------------------------------------------------------------------- /src/images/beasty4.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty4.cry -------------------------------------------------------------------------------- /src/images/beasty5.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty5.cry -------------------------------------------------------------------------------- /src/images/beasty6.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty6.cry -------------------------------------------------------------------------------- /src/images/beasty7.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty7.cry -------------------------------------------------------------------------------- /src/images/beasty8.cry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/images/beasty8.cry -------------------------------------------------------------------------------- /src/images_sounds.s: -------------------------------------------------------------------------------- 1 | ; *********************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; 5 | ; ===== 6 | ; =========== 7 | ; ====== == ====== 8 | ; ====== == ====== 9 | ; ====== == ====== 10 | ; ========= == ========== 11 | ; ====== ==== == === ======= 12 | ; ====== === === ==== ====== 13 | ; =========== ============== =========== 14 | ; ====== ============ ====== ====== =========== ====== 15 | ; ===== =========== =========== ====== 16 | ; =========================== =========================== 17 | ; ========================= ========================= 18 | ; === ======== ======== === 19 | ; ==== ============= ==== ==== ============= === 20 | ; ============= ========================= ============= 21 | ; ==== ======= ================ ====== === 22 | ; === ====== === == == === ====== === 23 | ; ==== ====== ==== == === ==== ====== ==== 24 | ; ====== === == == ==== ====== 25 | ; ==== ==== == === === ==== 26 | ; === === == == ==== === 27 | ; ======= == === ======= 28 | ; ===================================== 29 | ; ================================= 30 | ; 31 | ; 32 | ; Fig 1. Ascii rendering of the 'pentagon' web used in level 27 of Tempest 2000. 33 | ; 34 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 35 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 36 | ; Collection': 37 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 38 | ; 39 | ; This is a cleaned-up and commented version of the source code file 'images_sounds.s'. 40 | ; 41 | ; No code has been changed, so this source file can be used to create a build 42 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 43 | ; 44 | ; All original variable and routine names are preserved. 45 | ; The changes include: 46 | ; - Fixed up indentation. 47 | ; - Added comments and routine headers. 48 | ; 49 | ; The home of this file and the rest of the Tempest 2000 source code is: 50 | ; https://github.com/mwenge/tempest2k 51 | ; 52 | ; images_sounds.s contains image and sound data. 53 | ; *********************************************************************************** 54 | .incbin "images/beasty3-trunc.cry" 55 | .incbin "images/beasty4.cry" 56 | .incbin "images/beasty5.cry" 57 | .incbin "images/beasty6.cry" 58 | .incbin "images/beasty7.cry" 59 | .incbin "images/beasty8.cry" 60 | 61 | modbase EQU $8d6800 62 | 63 | modtable: 64 | .dc.l modbase + $100 ; tune13.mod 65 | .dc.l modbase + $18d2c ; tune7.mod 66 | .dc.l modbase + $37a04 ; tune1.mod 67 | .dc.l modbase + $5bd7c ; tune3.mod 68 | .dc.l modbase + $80b22 ; rave4.mod 69 | .dc.l modbase + $99d72 ; tune5.mod 70 | .dc.l modbase + $b0a50 ; tune12.mod 71 | .dc.l 0 72 | 73 | ; This is a fragment of data from beasty8.cry. 74 | ; It must have ended up here and not been overwritten somehow. 75 | ; This is what it looks like in beasty8.cry, starting at position 76 | ; 0xf466 in that file: 77 | ; 0000f460: 0000 0000 0000 e37b 0000 e37b fbab fb97 .......{...{.... 78 | ; 0000f470: f05f f053 f053 f053 f047 f047 f047 f03f ._.S.S.S.G.G.G.? 79 | ; 0000f480: f03f f03f f033 f033 f033 f027 f027 f027 .?.?.3.3.3.'.'.' 80 | ; 0000f490: f01f f01f f01f f013 f013 f013 f00b fcbb ................ 81 | ; 0000f4a0: ebcb 0000 0000 0000 0000 0000 e37b 0000 .............{.. 82 | ; 0000f4b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 83 | ; 0000f4c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 84 | ; 0000f4d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 85 | ; 0000f4e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 86 | ; 0000f4f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 87 | 88 | .dc.l $e37b0000, $e37b0f1b, $f953fa63, $fa63fd5b 89 | .dc.l $fd4ff943, $f053f047, $f03ff03f, $f03ff033 90 | .dc.l $f033f033, $f027f027, $f027f01f, $f01ff943 91 | .dc.l $fd4ffc57, $fc57fd5b, $fc3f0f1b, $00000000 92 | .dc.l $00000000, $0000e37b, $0000e37b, $fbabfb97 93 | .dc.l $f05ff053, $f053f053, $f047f047, $f047f03f 94 | .dc.l $f03ff03f, $f033f033, $f033f027, $f027f027 95 | .dc.l $f01ff01f, $f01ff013, $f013f013, $f00bfcbb 96 | .dc.l $ebcb0000, $00000000, $00000000, $e37b0000 97 | .dc.l $00000000, $00000000, $00000000, $00000000 98 | .dc.l $00000000, $00000000, $00000000, $00000000 99 | .dc.l $00000000, $00000000, $00000000, $00000000 100 | .dc.l $00000000, $00000000, $00000000, $00000000 101 | .dc.l $00000000, $00000000, $00000000, $00000000 102 | 103 | ; modbase starts here. 104 | .incbin "sounds/tune13.mod" 105 | .DC.L $0000 106 | .incbin "sounds/tune7.mod" 107 | .DC.L $0000 108 | .incbin "sounds/tune1.mod" 109 | .DC.L $0000 110 | .incbin "sounds/tune3.mod" 111 | .DC.L $0000 112 | .incbin "sounds/rave4.mod" 113 | .DC.L $0000 114 | .incbin "sounds/tune5.mod" 115 | .DC.L $0000 116 | .incbin "sounds/tune12.mod" 117 | .DC.L $0000 118 | 119 | ; This contains fragments of tune12.mod, tune7.mod, and tune6.mod. 120 | ; The data is the 'sample' data from each mod file since that tends to take 121 | ; up most of each file and appear towards the end. It tells us that at one 122 | ; time tune6.mod was included in the build. 123 | ; Bytes 0 - 3192 tune12.mod 124 | ; Bytes 3192 - 23176 tune7.mod 125 | ; Bytes 23176 - end tune6.mod 126 | .incbin "incbin/paddingbetweentunesandsmp.bin" 127 | 128 | ; This is a table containing metadata for the samples. Pseucode representation below: 129 | ; Prio- Ze Repeat Repeat 130 | ; Name rity Period Start Length ro Start Length 131 | ; ---------------------- ----- ------ --------- ------- -- --------- --------- 132 | ; 0 dc.b 'Engine Noise 1 ', $0001, $01ac, $009acd00, $0011a0, $00, $009acd02, $00119e, $00 133 | ; 1 dc.b 'Player Shot Normal 2', $0002, $01ac, $009adea4, $0008e8, $00, $009adea4, $000000, $00 134 | ; 2 dc.b 'Engine Noise ', $0003, $01ac, $009ae290, $003378, $00, $009aee9e, $002594, $00 135 | ; 3 dc.b 'Player Death ', $0004, $00d6, $00000000, $00549a, $00, $00000000, $000000, $00 136 | ; 4 dc.b 'Player Death 2 ', $0005, $01ac, $00000000, $002458, $00, $00000000, $000000, $00 137 | ; 5 dc.b 'Player Shot Normal ', $0006, $01ac, $009b160c, $0007a4, $00, $009b160c, $000000, $00 138 | ; 6 dc.b 'Player Jump ', $0007, $01ac, $009b1db4, $0018de, $00, $009b1db4, $000000, $00 139 | ; 7 dc.b 'Crackle ', $0008, $00d6, $009b3696, $004594, $00, $009b3696, $000000, $00 140 | ; 8 dc.b 'Cleared Level ', $0009, $01ac, $009b7c2e, $0037a2, $00, $009b7c2e, $000000, $00 141 | ; 9 dc.b 'Warp ', $000a, $0238, $009bb3d4, $006ec8, $00, $009bb3d4, $000000, $00 142 | ;10 dc.b 'Large Explosion ', $000b, $01ac, $009c22a0, $0050c2, $00, $009c22a0, $000000, $00 143 | ;11 dc.b 'Powered Up Shot ', $000c, $01ac, $009c7366, $001976, $00, $009c7366, $000000, $00 144 | ;12 dc.b 'Get Power Up ', $000d, $01ac, $009c8ce0, $001aea, $00, $009c8ce0, $000000, $00 145 | ;13 dc.b 'Tink For Spike ', $000e, $00fe, $009ca7ce, $00040e, $00, $009ca7ce, $000000, $00 146 | ;14 dc.b 'NME At Top Of Web ', $000f, $01ac, $009cabe0, $00001e, $00, $009cabe0, $000000, $00 147 | ;15 dc.b 'Pulse For Pulsar ', $0010, $0358, $009cac02, $0019fe, $00, $009cac02, $000000, $00 148 | ;16 dc.b 'Normal Explosion ', $0011, $00d6, $009cc604, $002ab6, $00, $009cc604, $000000, $00 149 | ;17 dc.b 'Extra Explosion ', $0012, $0358, $009cf0be, $0018ca, $00, $009cf0be, $000000, $00 150 | ;18 dc.b 'Static or Pulsar ', $0013, $011c, $009d098c, $003fe4, $00, $009d098c, $000000, $00 151 | ;19 dc.b 'Pulsar Pulse ', $0014, $0358, $009d4974, $000f0c, $00, $009d4974, $000000, $00 152 | ;20 dc.b 'Off Shielded NME ', $0015, $00aa, $009d5884, $0027ca, $00, $009d5884, $000000, $00 153 | ;21 dc.b 'Excellent ', $0016, $0200, $009d8052, $005976, $00, $009d8052, $000000, $00 154 | ;22 dc.b 'Superzapper Recharge', $0016, $0200, $009dd9cc, $00a958, $00, $009dd9cc, $000000, $00 155 | ;23 dc.b 'yes ', $0018, $0200, $009e8328, $005a6c, $00, $009e832a, $005a6a, $00 156 | ;24 dc.b 'oneup ', $0019, $0200, $009edd98, $0043ae, $00, $009edd98, $000000, $00 157 | ;25 dc.b 'screeeam ', $001a, $0200, $009f214a, $004568, $00, $009f214a, $000000, $00 158 | ;26 dc.b 'sexy yes 1 ', $001b, $0200, $009f66b6, $002c54, $00, $009f66b6, $000000, $00 159 | ;27 dc.b 'sexy yes 2 ', $001c, $0200, $009f9362, $003236, $00, $009f9362, $000000, $00 160 | ;28 dc.b 'tink ', $001e, $0200, $009fc59c, $0005ce, $00, $009fc59c, $000000, $00 161 | ;29 dc.b 'zero ', $001f, $0200, $009fcb6e, $000008, $00, $009fcb6e, $000000, $00 162 | ; dc.b 'dummy ', $0020, $0200, $009fcb7a, $00a1d8, $00, $009fcb7a, $000000, $00 163 | .incbin "incbin/sound_samples_table.bin" 164 | 165 | .incbin "sounds/samples/01" 166 | .DC.L $0000 167 | .incbin "sounds/samples/02" 168 | .DC.L $0000 169 | .incbin "sounds/samples/03" 170 | .DC.L $0000 171 | .incbin "sounds/samples/06" 172 | .DC.L $0000 173 | .incbin "sounds/samples/07" 174 | .DC.L $0000 175 | .incbin "sounds/samples/08" 176 | .DC.L $0000 177 | .incbin "sounds/samples/09" 178 | .DC.L $0000 179 | .incbin "sounds/samples/10" 180 | .DC.L $0000 181 | .incbin "sounds/samples/11" 182 | .DC.L $0000 183 | .incbin "sounds/samples/12" 184 | .DC.L $0000 185 | .incbin "sounds/samples/13" 186 | .DC.L $0000 187 | .incbin "sounds/samples/14" 188 | .DC.L $0000 189 | .incbin "sounds/samples/15" 190 | .DC.L $0000 191 | .incbin "sounds/samples/16" 192 | .DC.L $0000 193 | .incbin "sounds/samples/17" 194 | .DC.L $0000 195 | .incbin "sounds/samples/18" 196 | .DC.L $0000 197 | .incbin "sounds/samples/19" 198 | .DC.L $0000 199 | .incbin "sounds/samples/20" 200 | .DC.L $0000 201 | .incbin "sounds/samples/21" 202 | .DC.L $0000 203 | .incbin "sounds/samples/22" 204 | .DC.L $0000 205 | .incbin "sounds/samples/23" 206 | .DC.L $0000 207 | .incbin "sounds/samples/24" 208 | .DC.L $0000 209 | .incbin "sounds/samples/25" 210 | .DC.L $0000 211 | .incbin "sounds/samples/26" 212 | .DC.L $0000 213 | .incbin "sounds/samples/27" 214 | .DC.L $0000 215 | .incbin "sounds/samples/28" 216 | .DC.L $0000 217 | .incbin "sounds/samples/29" 218 | .DC.L $0000 219 | .incbin "sounds/samples/30" 220 | .DC.L $0000 221 | .incbin "sounds/samples/15" 222 | 223 | ; This contains fragments of sample data. 224 | ; sample 28 225 | .incbin "incbin/paddingaftersamples.bin" 226 | ; vim:ft=asm68k ts=2 227 | -------------------------------------------------------------------------------- /src/incbin/paddingaftersamples.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/incbin/paddingaftersamples.bin -------------------------------------------------------------------------------- /src/incbin/paddingbetweentunesandsmp.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/incbin/paddingbetweentunesandsmp.bin -------------------------------------------------------------------------------- /src/incbin/romheader.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/incbin/romheader.bin -------------------------------------------------------------------------------- /src/incbin/sound_samples_table.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/incbin/sound_samples_table.bin -------------------------------------------------------------------------------- /src/smp/mk.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | 4 | /* Take text file smp.dat in a fixed format 5 | and produce binary file smp.bin 6 | containing sound effect sample data */ 7 | 8 | /* Input: 9 | 01234567890123456789 prio per len L rst rln 10 | 20 character name DDDD DDDD XXXX L XXXX XXXXignored 11 | 12 | Output: 13 | 20 bytes name 14 | priority.w 15 | period.w 16 | start.l left as zero 17 | length.l 18 | repeat start.l 19 | repeat length.l 20 | */ 21 | 22 | void error( char *name ) 23 | { 24 | printf( "Error %s\n", name ); 25 | exit(1); 26 | } 27 | 28 | void main(int argc, char *argv[] ) 29 | { 30 | 31 | FILE *inf; 32 | FILE *outf; 33 | 34 | unsigned char name[20]; 35 | unsigned int priority; 36 | unsigned int period; 37 | unsigned long length; 38 | unsigned char loopflag; 39 | unsigned long repstart; 40 | unsigned long replen; 41 | 42 | unsigned long zero = 0; 43 | 44 | unsigned char null[50]; 45 | 46 | unsigned char InFilename[100]; 47 | unsigned char OutFilename[100]; 48 | 49 | if ( argc < 1 ) 50 | error( "insufficient args. Give root file name as only argument\n" ); 51 | 52 | strcpy( InFilename, argv[1] ); 53 | strcpy( OutFilename, argv[1] ); 54 | 55 | strcat( InFilename, ".dat" ); 56 | strcat( OutFilename, ".bin" ); 57 | 58 | inf=fopen( InFilename, "r" ); 59 | if (!inf) 60 | error( "Opening smp.dat for input" ); 61 | 62 | outf=fopen( OutFilename, "wb" ); 63 | if (!outf) 64 | error( "Opening smp.bin for output" ); 65 | 66 | while ( !feof(inf) ) 67 | { 68 | if ( fscanf( inf, "%20c%hd %hd %04x %1c", name, &priority, &period, &length, &loopflag ) != 5 ) 69 | exit(0); 70 | 71 | if (loopflag == 'L') 72 | { 73 | fscanf( inf, "%04x %04x", &repstart, &replen ); 74 | fgets( null, 50, inf ); 75 | } 76 | else 77 | { 78 | fgets( null, 50, inf ); 79 | repstart = 0; 80 | replen = 0; 81 | } 82 | 83 | /* now adjust values as required */ 84 | length<<=8; 85 | replen<<=8; 86 | 87 | 88 | /*output values */ 89 | fwrite( name, 1, 20, outf ); 90 | fwrite( &priority, 1, 2, outf ); 91 | fwrite( &period, 1, 2, outf ); 92 | fwrite( &zero, 1, 4, outf ); 93 | fwrite( &length, 1, 4, outf ); 94 | fwrite( &repstart, 1, 4, outf ); 95 | fwrite( &replen, 1, 4, outf ); 96 | } 97 | 98 | fclose( outf ); 99 | fclose( inf ); 100 | } 101 | -------------------------------------------------------------------------------- /src/smp/smp.dat: -------------------------------------------------------------------------------- 1 | Engine Noise 1 01 428 11a0 L 0002 119e 2 | Player Shot Normal 202 428 08e8 - 3 | Engine Noise 03 428 3378 L 0c0e 2594 4 | Player Death 04 214 549a - 5 | Player Death 2 05 428 2458 - 6 | Player Shot Normal 06 428 07a4 - 7 | Player Jump 07 428 18de - 8 | Crackle 08 214 4594 - 9 | Cleared Level 09 428 37a2 - 10 | Warp 10 568 6ec8 - 11 | Large Explosion 11 428 50c2 - 12 | Powered Up Shot 12 428 1976 - 13 | Get Power Up 13 428 1aea - 14 | Tink For Spike 14 254 040e - 15 | NME At Top Of Web 15 428 001e - 16 | Pulse For Pulsar 16 856 19fe - 17 | Normal Explosion 17 214 2ab6 - 18 | Extra Explosion 18 856 18ca - 19 | Static or Pulsar 19 284 3fe4 - 20 | Pulsar Pulse 20 856 0f0c - 21 | Off Shielded NME 21 170 27ca - 22 | -------------------------------------------------------------------------------- /src/sounds/rave4.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/rave4.mod -------------------------------------------------------------------------------- /src/sounds/samples/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/01 -------------------------------------------------------------------------------- /src/sounds/samples/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/02 -------------------------------------------------------------------------------- /src/sounds/samples/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/03 -------------------------------------------------------------------------------- /src/sounds/samples/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/04 -------------------------------------------------------------------------------- /src/sounds/samples/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/05 -------------------------------------------------------------------------------- /src/sounds/samples/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/06 -------------------------------------------------------------------------------- /src/sounds/samples/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/07 -------------------------------------------------------------------------------- /src/sounds/samples/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/08 -------------------------------------------------------------------------------- /src/sounds/samples/09: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/09 -------------------------------------------------------------------------------- /src/sounds/samples/10: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/10 -------------------------------------------------------------------------------- /src/sounds/samples/11: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/11 -------------------------------------------------------------------------------- /src/sounds/samples/12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/12 -------------------------------------------------------------------------------- /src/sounds/samples/13: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/13 -------------------------------------------------------------------------------- /src/sounds/samples/14: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/14 -------------------------------------------------------------------------------- /src/sounds/samples/15: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/15 -------------------------------------------------------------------------------- /src/sounds/samples/16: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/16 -------------------------------------------------------------------------------- /src/sounds/samples/17: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/17 -------------------------------------------------------------------------------- /src/sounds/samples/18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/18 -------------------------------------------------------------------------------- /src/sounds/samples/19: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/19 -------------------------------------------------------------------------------- /src/sounds/samples/20: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/20 -------------------------------------------------------------------------------- /src/sounds/samples/21: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/21 -------------------------------------------------------------------------------- /src/sounds/samples/22: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/22 -------------------------------------------------------------------------------- /src/sounds/samples/23: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/23 -------------------------------------------------------------------------------- /src/sounds/samples/24: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/24 -------------------------------------------------------------------------------- /src/sounds/samples/25: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/25 -------------------------------------------------------------------------------- /src/sounds/samples/26: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/26 -------------------------------------------------------------------------------- /src/sounds/samples/27: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/27 -------------------------------------------------------------------------------- /src/sounds/samples/28: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/28 -------------------------------------------------------------------------------- /src/sounds/samples/29: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/samples/29 -------------------------------------------------------------------------------- /src/sounds/samples/30: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/sounds/tune1.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/tune1.mod -------------------------------------------------------------------------------- /src/sounds/tune12.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/tune12.mod -------------------------------------------------------------------------------- /src/sounds/tune13.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/tune13.mod -------------------------------------------------------------------------------- /src/sounds/tune3.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/tune3.mod -------------------------------------------------------------------------------- /src/sounds/tune5.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/tune5.mod -------------------------------------------------------------------------------- /src/sounds/tune7.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/src/sounds/tune7.mod -------------------------------------------------------------------------------- /src/vidinit.s: -------------------------------------------------------------------------------- 1 | ; *********************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; 5 | ; ============= ============= 6 | ; ================= ================= 7 | ; ==== ==== ====== ====== ===== === 8 | ; === ===== ======== ======== ===== ==== 9 | ; === ===== === =============== === ===== === 10 | ; === ===== === == === === ===== === 11 | ; ==== ===== === == == === ===== === 12 | ; === =========== ========== === 13 | ; =========== ===================== =========== 14 | ; ==================== === ========= === ==================== 15 | ; == ============= ============= == 16 | ; == === ==== == 17 | ; == == == == 18 | ; == ========== ========== == 19 | ; == ==================== ======= ==================== == 20 | ; ============== ====================== ============== 21 | ; ===== ========== ========== ===== 22 | ; === ==== === == == === ==== === 23 | ; === ==== === === === === ==== ==== 24 | ; === ==== === ============= === ==== === 25 | ; === ==== ========================= ==== === 26 | ; === ===== ======= ======= ==== === 27 | ; ======== ===== ====== ======= 28 | ; ============== ============== 29 | ; ========== ========== 30 | ; 31 | ; Fig 1. Ascii rendering of the 'dumb-bell' web used in level 7 of Tempest 2000. 32 | ; 33 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 34 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 35 | ; Collection': 36 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 37 | ; 38 | ; This is a cleaned-up and commented version of the source code file 'vidinit.s'. 39 | ; 40 | ; No code has been changed, so this source file can be used to create a build 41 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 42 | ; 43 | ; All original variable and routine names are preserved. 44 | ; The changes include: 45 | ; - Fixed up indentation. 46 | ; - Added comments and routine headers. 47 | ; 48 | ; The home of this file and the rest of the Tempest 2000 source code is: 49 | ; https://github.com/mwenge/tempest2k 50 | ; 51 | ; vidinit.s contains routines to set up video, e.g. NTSC/PAL. 52 | ; *********************************************************************************** 53 | .include 'jaguar.inc' 54 | 55 | .globl VideoIni 56 | .globl n_vde 57 | .globl n_vdb 58 | .globl pal 59 | 60 | ; The size of the horizontal and vertical active areas 61 | ; are based on a given center position and then built 62 | ; as offsets of half the size off of these. 63 | 64 | ; In the horizontal direction this needs to take into 65 | ; account the variable resolution that is possible. 66 | 67 | ; THESE ARE THE NTSC DEFINITIONS 68 | ntsc_width equ 1409 69 | ntsc_hmid equ 823 70 | 71 | ntsc_height equ 241 72 | ntsc_vmid equ 266 73 | 74 | ; THESE ARE THE PAL DEFINITIONS 75 | pal_width equ 1381 76 | pal_hmid equ 843 77 | 78 | pal_height equ 287 79 | pal_vmid equ 322 80 | 81 | 82 | ; ******************************************************************* 83 | ; VideoIni 84 | ; Check if NTSC or PAL 85 | ; For now assume NTSC 86 | ; ******************************************************************* 87 | VideoIni: 88 | 89 | movem.l d0-d6,-(sp) 90 | clr pal 91 | 92 | move.w BASE+$14002,d0 ;CONFIG 93 | and.w #$10,d0 94 | beq ispal 95 | 96 | move.w #ntsc_hmid,d2 97 | move.w #ntsc_width,d0 98 | 99 | move.w #ntsc_vmid,d6 100 | move.w #ntsc_height,d4 101 | 102 | bra doit 103 | 104 | ispal: 105 | move.w #pal_hmid,d2 106 | move.w #pal_width,d0 107 | 108 | move.w #pal_vmid,d6 109 | move.w #pal_height,d4 110 | move #1,pal 111 | 112 | doit: 113 | move.w d0,width 114 | move.w d4,height 115 | 116 | move.w d0,d1 117 | asr #1,d1 ; Max width/2 118 | 119 | sub.w d1,d2 ; middle-width/2 120 | add.w #4,d2 ; (middle-width/2)+4 121 | 122 | sub.w #1,d1 ; Width/2-1 123 | or.w #$400,d1 ; (Width/2-1)|$400 124 | 125 | move.w d1,a_hde 126 | move.w d1,HDE 127 | 128 | move.w d2,a_hdb 129 | move.w d2,HDB1 130 | move.w d2,HDB2 131 | 132 | move.w d6,d5 133 | sub.w d4,d5 ; already in half lines 134 | move.w d5,n_vdb 135 | 136 | add.w d4,d6 137 | move.w d6,n_vde 138 | 139 | ; move.w n_vdb,VDB 140 | move.w #$FFFF,VDE 141 | 142 | ; Also lets set up some default colors 143 | 144 | move.w #$0,BG 145 | move.l #$0,BORD1 146 | 147 | movem.l (sp)+,d0-d6 148 | rts 149 | 150 | .bss 151 | 152 | height: 153 | ds.w 1 154 | n_vdb: 155 | ds.w 1 156 | n_vde: 157 | ds.w 1 158 | pal: 159 | ds.w 1 160 | 161 | 162 | width: 163 | ds.w 1 164 | a_hdb: 165 | ds.w 1 166 | a_hde: 167 | ds.w 1 168 | 169 | 170 | 171 | ; vim:ft=asm68k ts=2 172 | -------------------------------------------------------------------------------- /src/yakgpu.s: -------------------------------------------------------------------------------- 1 | ; *********************************************************************************** 2 | ; Welcome to the Motorola 68K Assembler source code for 'Tempest 2000' by Jeff Minter. 3 | ; 4 | ; 5 | ; 6 | ; === 7 | ; ====== 8 | ; ======== 9 | ; ========= === 10 | ; =========== ======= 11 | ; ============= ========== 12 | ; === =========== ======== ==== 13 | ; ================ ================ 14 | ; =============== ================== 15 | ; === ========== =========== === 16 | ; ================ =================== 17 | ; ================ =================== 18 | ; === ======== ========== === 19 | ; ================== ================== 20 | ; === ========== ======= = === 21 | ; === ====== === ========= ======= === 22 | ; ============= ======= ==== ======= 23 | ; =========== ==== == === === 24 | ; ===== == == ==== === 25 | ; ==== == === ====== 26 | ; === == === === 27 | ; ===== === === 28 | ; === ===== 29 | ; =========== 30 | ; ======= 31 | ; 32 | ; Fig 1. Ascii rendering of the 'distorted W' web used in level 6 of Tempest 2000. 33 | ; 34 | ; This source code was originally 'leaked' by 'JaySmith2000' in August 2008, 35 | ; who sold it on CD as part of a release entitled the 'Jaguar Sector II Source Code 36 | ; Collection': 37 | ; https://web.archive.org/web/20131117222232/http://www.jaysmith2000.com/Jagpriceguide.htm 38 | ; 39 | ; This is a cleaned-up and commented version of the source code file 'yakgpu.s'. 40 | ; 41 | ; No code has been changed, so this source file can be used to create a build 42 | ; of Tempest 2000 that is byte-for-byte identical to the original 1994 release. 43 | ; 44 | ; All original variable and routine names are preserved. 45 | ; The changes include: 46 | ; - Fixed up indentation. 47 | ; - Added comments and routine headers. 48 | ; 49 | ; The home of this file and the rest of the Tempest 2000 source code is: 50 | ; https://github.com/mwenge/tempest2k 51 | ; 52 | ; yakgpu.s contains routines to load and run the game's GPU modules. 53 | ; *********************************************************************************** 54 | 55 | include "jaguar.inc" 56 | 57 | ; 58 | ; PUBLIC SYMBOLS 59 | ; 60 | .globl gpuload 61 | .globl gpurun 62 | .globl gpuwait 63 | .globl fastvector 64 | .globl xvector 65 | .globl demons 66 | .globl parrot 67 | .globl xparrot 68 | .globl texter 69 | .globl bovine 70 | .globl equine 71 | .globl equine2 72 | 73 | 74 | ;*======================================================================* 75 | ;* gpuload() - load a GPU program into GPU RAM 76 | ;* 77 | ;* input: 78 | ;* a0 - 68000 address of GPU program 79 | ;* 80 | ;* preserved: 81 | ;* d0-d1 82 | ;* a0-a1 83 | ;*======================================================================* 84 | gpuload: 85 | 86 | movem.l d0-d2/a0-a1,-(sp) ; save GPU address for restore 87 | 88 | move.l lastloaded,d0 89 | move.l a0,d1 90 | cmp.l d0,d1 91 | beq qrts ;no need to load if already done 92 | move.l d1,lastloaded 93 | 94 | 95 | ; moveq #8,d0 96 | ; swap d0 97 | clr.l d0 98 | move.l d0,G_CTRL ;make sure the GPU is stopped 99 | 100 | ; This code will load a gpu program into the Blitter at the address 101 | ; specified in the header 102 | 103 | move.l #PITCH1|PIXEL16|WID256|XADDPHR,d0 104 | move.l d0,A1_FLAGS 105 | move.l d0,A2_FLAGS 106 | 107 | ; Point A1BASE to the destination 108 | ; Read destination from header of file 109 | ; Phrase align and find remainder 110 | 111 | move.l (a0)+,d0 112 | move.l d0,d1 113 | and.l #$fffffff8,d0 114 | sub.l d0,d1 115 | move.l d0,A1_BASE 116 | 117 | ; Set the pixel pointer to the offset in d1 118 | 119 | asr.l #1,d1 ; Convert to pixels 120 | move.l d1,A1_PIXEL 121 | 122 | ; Find size of data to load 123 | 124 | move.l (a0)+,d0 125 | asr.l #1,d0 ; Convert to words 126 | or.l #$10000,d0 ; Set 1 outer loop 127 | move.l d0,B_COUNT 128 | 129 | ; Set up Counters register to number of words 130 | 131 | ; Point A2BASE to the source 132 | ; a0 now points to the data 133 | ; Phrase align and find remainder 134 | 135 | move.l a0,d0 136 | move.l d0,d2 137 | and.l #$fffffff8,d0 138 | sub.l d0,d2 139 | move.l d0,A2_BASE 140 | 141 | ; Set the pixel pointer to the offset in d1 142 | 143 | asr.l #1,d2 ; Convert to pixels 144 | move.l d2,A2_PIXEL 145 | 146 | ; Now Turn IT ON !!!!!!!!!!!!! 147 | 148 | ; DESTINATION = SOURCE 149 | ; NO OUTER LOOP 150 | 151 | ; cmp.l d1,d2 152 | ; bpl.s .aligned 153 | or.l d1,d2 154 | beq.s .aligned 155 | 156 | move.l #SRCEN|SRCENX|LFU_AN|LFU_A,d0 157 | bra.s .blit_go 158 | .aligned: 159 | move.l #SRCEN|LFU_AN|LFU_A,d0 160 | .blit_go: 161 | move.l d0,B_CMD 162 | ; 163 | ; NOTE: No Wait for BLTTER Idle - I have yet to be overrun but WARNING 164 | ; 165 | 166 | wblit: move.l B_CMD,d0 167 | btst #0,d0 168 | beq wblit 169 | 170 | qrts: movem.l (sp)+,d0-d2/a0-a1 171 | rts 172 | 173 | ;*======================================================================* 174 | ;* gpurun() - tell the GPU to begin execution 175 | ;* 176 | ;* input: 177 | ;* a0 - 68000 address of GPU program 178 | ;* 179 | ;* preserved: 180 | ;* d0-d1 181 | ;* a0 182 | ;*======================================================================* 183 | gpurun: 184 | bsr gpuload ; load if not already loaded 185 | movem.l d0-d1/a0,-(sp) ; save GPU address for restore 186 | move.l (a0)+,G_PC ; load GPU PC 187 | move.l #$11,G_CTRL ; Turn on the GPU 188 | movem.l (sp)+,a0/d0-d1 ; restore GPU address 189 | rts 190 | 191 | ;*======================================================================* 192 | ;* gpuwait() - wait for the GPU to finish executing 193 | ;* 194 | ;* input: 195 | ;* None 196 | ;* 197 | ;* preserved: 198 | ;* d0 199 | ;* a0 200 | ;*======================================================================* 201 | gpuwait: 202 | movem.l a0/d0,-(sp) 203 | 204 | lea G_CTRL,a0 205 | .gpuwt: ; wait for GPU to finish 206 | move.l (a0),d0 207 | btst #0,d0 208 | bne .gpuwt 209 | 210 | movem.l (sp)+,a0/d0 211 | rts 212 | 213 | ; ******************************************************************* 214 | ; 215 | ; CONSTANT DATA (GPU PROGRAMS) 216 | ; 217 | ; The extra bytes before each include are the .BIN output header the MAC 218 | ; assembler would have produced for each. Unfortunately neither rmac nor 219 | ; vasm support this output format, so we have to use vasm to create an 220 | ; absolute binary and append the headers here. 221 | ; ******************************************************************* 222 | fastvector: 223 | DC.L $00f03000 , $00000a82 224 | .incbin "bin/llama.o" 225 | xvector: 226 | DC.L $00f03000 , $00000c46 227 | .incbin "bin/goat.o" 228 | demons: 229 | DC.L $00f03000 , $00000e48 230 | .incbin "bin/antelope.o" 231 | parrot: 232 | DC.L $00f03000 , $0000068a 233 | .incbin "bin/camel.o" 234 | xparrot: 235 | DC.L $00f03000 , $00000d32 236 | .incbin "bin/xcamel.o" 237 | texter: 238 | DC.L $00f03000 , $000002f6 239 | .incbin "bin/stoat.o" 240 | bovine: 241 | DC.L $00f03000 , $00000a3c 242 | .incbin "bin/ox.o" 243 | equine: 244 | DC.L $00f03000 , $00000b4a 245 | .incbin "bin/horse.o" 246 | equine2: 247 | DC.L $00f03000 , $000009e0 248 | .incbin "bin/donky.o" 249 | 250 | .data 251 | 252 | lastloaded: dc.l 0 253 | 254 | ;*======================================================================* 255 | ;* EOF * 256 | ;*======================================================================* 257 | 258 | ; vim:ft=asm68k 259 | -------------------------------------------------------------------------------- /unused/gpu.inc: -------------------------------------------------------------------------------- 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2 | ; Header File: GPU.INC 3 | ; Jaguar GPU Equates 4 | ; 5 | ; NOTICE: This file has been incorporated into JAGUAR.INC. This file 6 | ; is for compatibility reasons only. 7 | ; 8 | 9 | .include "jaguar.inc" 10 | 11 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 12 | ;;; WARNING!!! The following EQU's exist here for compatibility only. 13 | ;;; Do not use them. There are more EQUs with better names in JAGUAR.INC 14 | ;;; These EQUs - Including this whole include file will go away in the next 15 | ;;; release 16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 17 | 18 | IF COMPAT 19 | 20 | G_ZERO EQU $00000001 ; ALU zero flag 21 | G_CARRY EQU $00000002 ; ALU carry flag 22 | G_NEGATIVE EQU $00000004 ; ALU negative flag 23 | G_IMASK EQU $00000008 ; Interrupt mask 24 | G_INTEN0 EQU $00000010 ; Interrupt enable bits 25 | G_INTEN1 EQU $00000020 ; Interrupt enable bits 26 | G_INTEN2 EQU $00000040 ; Interrupt enable bits 27 | G_INTEN3 EQU $00000080 ; Interrupt enable bits 28 | G_INTEN4 EQU $00000100 ; Interrupt enable bits 29 | G_INTCLR0 EQU $00000200 ; Interrupt disable bits 30 | G_INTCLR1 EQU $00000400 ; Interrupt disable bits 31 | G_INTCLR2 EQU $00000800 ; Interrupt disable bits 32 | G_INTCLR3 EQU $00001000 ; Interrupt disable bits 33 | G_INTCLR4 EQU $00002000 ; Interrupt disable bits 34 | G_REGPAGE EQU $00004000 ; Register Bank 35 | G_DMAEN EQU $00008000 ; GPU Load and Store at DMA priority 36 | 37 | GPUM3x1 EQU $00000003 ; [ 3x1] matrix 38 | GPUM4x1 EQU $00000004 ; [ 4x1] matrix 39 | GPUM5x1 EQU $00000005 ; [ 5x1] matrix 40 | GPUM6x1 EQU $00000006 ; [ 6x1] matrix 41 | GPUM7x1 EQU $00000007 ; [ 7x1] matrix 42 | GPUM8x1 EQU $00000008 ; [ 8x1] matrix 43 | GPUM9x1 EQU $00000009 ; [ 9x1] matrix 44 | GPUM10x1 EQU $0000000A ; [10x1] matrix 45 | GPUM11x1 EQU $0000000B ; [11x1] matrix 46 | GPUM12x1 EQU $0000000C ; [12x1] matrix 47 | GPUM13x1 EQU $0000000D ; [13x1] matrix 48 | GPUM14x1 EQU $0000000E ; [14x1] matrix 49 | GPUM15x1 EQU $0000000F ; [15x1] matrix 50 | 51 | GPUMROW EQU $00000000 ; Row Major matrix 52 | GPUMCOL EQU $00000010 ; Column Major matrix 53 | 54 | GPU_CPUINT EQU $00000002 ; Allow GPU to interrupt CPU 55 | GPUINT0 EQU $00000004 ; generate a GPU type 0 interrupt 56 | INT_LAT0 EQU $00000040 ; Interrupt latch 0 57 | INT_LAT1 EQU $00000080 ; Interrupt latch 1 58 | INT_LAT2 EQU $00000100 ; Interrupt latch 2 59 | INT_LAT3 EQU $00000200 ; Interrupt latch 3 60 | INT_LAT4 EQU $00000400 ; Interrupt latch 4 61 | 62 | ENDIF 63 | -------------------------------------------------------------------------------- /unused/rantab.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/rantab.bin -------------------------------------------------------------------------------- /unused/sines.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/sines.bin -------------------------------------------------------------------------------- /unused/syn6.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/syn6.o -------------------------------------------------------------------------------- /unused/t2k.db: -------------------------------------------------------------------------------- 1 | global mp 2 | global mstart 3 | global sp 4 | global sstart 5 | global sssize 6 | global prio 7 | 8 | procedure upd 9 | sl `mp `rwstart 10 | set mp `mp+4 11 | set mstart (`mstart+`rwsize) 12 | sl `mstart 0 13 | set mstart (`mstart+4) 14 | . 15 | 16 | procedure supd loop 17 | #set actual sample start 18 | sl `sp+@24 `rwstart 19 | #offset repeat start 20 | sl `sp+@32 (lpeek(`sp+@32) + `rwstart) 21 | set sp `sp+`sssize 22 | 23 | set sstart (`sstart+`rwsize) 24 | sl `sstart 0 25 | set sstart (`sstart+4) 26 | . 27 | 28 | procedure nulsupd 29 | sl `sp+@24 0 30 | set sp `sp+sssize 31 | . 32 | 33 | echo "Loading picture data..." 34 | gag on 35 | read beasty3.cry 820000 36 | read beasty4.cry 83f400 37 | read beasty5.cry 85e800 38 | read beasty6.cry 884000 39 | read beasty7.cry 898000 40 | read beasty8.cry 8b7400 41 | gag off 42 | echo "Loading in some toons..." 43 | set mp 8d6800 44 | set mstart 8d6900 45 | read e:\newjag\mod\tune13.mod `mstart 46 | upd 47 | read e:\newjag\mod\tune7.mod `mstart 48 | upd 49 | read e:\newjag\mod\tune1.mod `mstart 50 | upd 51 | read e:\newjag\mod\tune3.mod `mstart 52 | upd 53 | read e:\newjag\mod\rave4.mod `mstart 54 | upd 55 | read e:\newjag\mod\tune5.mod `mstart 56 | upd 57 | read e:\newjag\mod\tune12.mod `mstart 58 | upd 59 | echo "Loading in some samples.." 60 | set sp 9ac800 61 | set sstart 9acd00 62 | set sssize @40 63 | read smp.bin `sp 64 | read e:\newjag\numod\01 `sstart 65 | supd 66 | read e:\newjag\numod\02 `sstart 67 | supd 68 | read e:\newjag\numod\03 `sstart 69 | supd 70 | nulsupd 71 | nulsupd 72 | read e:\newjag\numod\06 `sstart 73 | supd 74 | read e:\newjag\numod\07 `sstart 75 | supd 76 | read e:\newjag\numod\08 `sstart 77 | supd 78 | read e:\newjag\numod\09 `sstart 79 | supd 80 | read e:\newjag\numod\10 `sstart 81 | supd 82 | read e:\newjag\numod\11 `sstart 83 | supd 84 | read e:\newjag\numod\12 `sstart 85 | supd 86 | read e:\newjag\numod\13 `sstart 87 | supd 88 | read e:\newjag\numod\14 `sstart 89 | supd 90 | read e:\newjag\numod\15 `sstart 91 | supd 92 | read e:\newjag\numod\16 `sstart 93 | supd 94 | read e:\newjag\numod\17 `sstart 95 | supd 96 | read e:\newjag\numod\18 `sstart 97 | supd 98 | read e:\newjag\numod\19 `sstart 99 | supd 100 | read e:\newjag\numod\20 `sstart 101 | supd 102 | read e:\newjag\numod\21 `sstart 103 | supd 104 | read e:\newjag\numod\22 `sstart 105 | supd 106 | read e:\newjag\numod\23 `sstart 107 | supd 108 | read e:\newjag\numod\24 `sstart 109 | supd 110 | read e:\newjag\numod\25 `sstart 111 | supd 112 | read e:\newjag\numod\26 `sstart 113 | supd 114 | read e:\newjag\numod\27 `sstart 115 | supd 116 | read e:\newjag\numod\28 `sstart 117 | supd 118 | read e:\newjag\numod\29 `sstart 119 | supd 120 | read e:\newjag\numod\30 `sstart 121 | supd 122 | read e:\newjag\numod\15 `sstart 123 | supd 124 | echo "Loading in that code stuff.." 125 | gag on 126 | load yak.db 127 | 128 | -------------------------------------------------------------------------------- /unused/t2kmusic94/README: -------------------------------------------------------------------------------- 1 | Here is the Imagitec Jaguar music player with all 13 Tempest tunes and the sound effects. 2 | 3 | The tunes and sound effects load into ROM. The player code and data loads into RAM. 4 | 5 | In rdbjag, type : 6 | 7 | load l.db 8 | loadmods 9 | load l1.db 10 | loadsams 11 | load a.db 12 | y 13 | 14 | This will make the first 12 tunes accessible via the keypad and the first 12 sound FX 15 | also accessible via keypad. OPTION toggles music<->SFX selection. 16 | 17 | Replacing l1 with l2 in the above sequence will make the remaining SFX available. 18 | You will have to edit l.db to replace another tune with tune13.mod if you want to hear it. 19 | 20 | As always, call if you have problems. 21 | 22 | Trevor Raynsford. 23 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST.ZIP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST.ZIP -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/A.DB: -------------------------------------------------------------------------------- 1 | VMODE 0 2 | nb 3 | load test.db 4 | xpc 4000 5 | g 6 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/L.DB: -------------------------------------------------------------------------------- 1 | global mp 2 | global mstart 3 | 4 | procedure upd 5 | sl `mp `rwstart 6 | set mp `mp+4 7 | set mstart (`mstart+`rwsize) 8 | sl `mstart 0 9 | set mstart (`mstart+4) 10 | . 11 | 12 | procedure nulupd 13 | sl `mp 0 14 | set mp `mp+4 15 | . 16 | 17 | 18 | procedure loadmods 19 | 20 | set mp 80a000 21 | set mstart 830000 22 | 23 | read mod\tune1.mod `mstart 24 | upd 25 | read mod\tune2.mod `mstart 26 | upd 27 | read mod\tune3.mod `mstart 28 | upd 29 | read mod\tune4.mod `mstart 30 | upd 31 | read mod\tune5.mod `mstart 32 | upd 33 | read mod\tune6.mod `mstart 34 | upd 35 | read mod\tune7.mod `mstart 36 | upd 37 | read mod\tune8.mod `mstart 38 | upd 39 | read mod\tune9.mod `mstart 40 | upd 41 | read mod\tune10.mod `mstart 42 | upd 43 | read mod\tune11.mod `mstart 44 | upd 45 | read mod\tune12.mod `mstart 46 | upd 47 | . 48 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/L1.DB: -------------------------------------------------------------------------------- 1 | global sp 2 | global sstart 3 | global sssize 4 | 5 | set sp 80a030 6 | set sstart 80a230 7 | set sssize @40 8 | 9 | procedure supd loop 10 | #set actual sample start 11 | sl `sp+@24 `rwstart 12 | #offset repeat start 13 | sl `sp+@32 (lpeek(`sp+@32) + `rwstart) 14 | set sp `sp+`sssize 15 | 16 | set sstart (`sstart+`rwsize) 17 | sl `sstart 0 18 | set sstart (`sstart+4) 19 | . 20 | 21 | procedure nulsupd 22 | sl `sp+@24 0 23 | set sp `sp+sssize 24 | . 25 | 26 | procedure loadsams 27 | read smp\smp1.bin `sp 28 | read smp\01 `sstart 29 | supd 30 | read smp\02 `sstart 31 | supd 32 | read smp\03 `sstart 33 | supd 34 | read smp\04 `sstart 35 | supd 36 | read smp\05 `sstart 37 | supd 38 | read smp\06 `sstart 39 | supd 40 | read smp\07 `sstart 41 | supd 42 | read smp\08 `sstart 43 | supd 44 | read smp\09 `sstart 45 | supd 46 | read smp\10 `sstart 47 | supd 48 | read smp\11 `sstart 49 | supd 50 | read smp\12 `sstart 51 | supd 52 | . 53 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/L2.DB: -------------------------------------------------------------------------------- 1 | global sp 2 | global sstart 3 | global sssize 4 | 5 | set sp 80a030 6 | set sstart 80a230 7 | set sssize @40 8 | 9 | procedure supd loop 10 | #set actual sample start 11 | sl `sp+@24 `rwstart 12 | #offset repeat start 13 | sl `sp+@32 (lpeek(`sp+@32) + `rwstart) 14 | set sp `sp+`sssize 15 | 16 | set sstart (`sstart+`rwsize) 17 | sl `sstart 0 18 | set sstart (`sstart+4) 19 | . 20 | 21 | procedure nulsupd 22 | sl `sp+@24 0 23 | set sp `sp+sssize 24 | . 25 | 26 | procedure loadsams 27 | read smp\smp2.bin `sp 28 | read smp\13 `sstart 29 | supd 30 | read smp\14 `sstart 31 | supd 32 | read smp\15 `sstart 33 | supd 34 | read smp\16 `sstart 35 | supd 36 | read smp\17 `sstart 37 | supd 38 | read smp\18 `sstart 39 | supd 40 | read smp\19 `sstart 41 | supd 42 | read smp\20 `sstart 43 | supd 44 | read smp\21 `sstart 45 | supd 46 | nulsupd 47 | nulsupd 48 | nulsupd 49 | . 50 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE1.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE1.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE10.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE10.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE11.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE11.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE12.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE12.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE13.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE13.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE2.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE2.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE3.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE3.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE4.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE4.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE5.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE5.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE6.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE6.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE7.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE7.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE8.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE8.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/MOD/TUNE9.MOD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/MOD/TUNE9.MOD -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/01 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/02 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/03 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/04 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/05 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/06 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/07 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/08 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/09: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/09 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/10: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/10 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/11: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/11 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/12 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/13: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/13 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/14: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/14 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/15: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/15 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/16: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/16 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/17: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/17 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/18 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/19: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/19 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/20: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/20 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/21: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/21 -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/MK.C: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | 4 | /* Take text file smp.dat in a fixed format 5 | and produce binary file smp.bin 6 | containing sound effect sample data */ 7 | 8 | /* Input: 9 | 01234567890123456789 prio per len L rst rln 10 | 20 character name DDDD DDDD XXXX L XXXX XXXXignored 11 | 12 | Output: 13 | 20 bytes name 14 | priority.w 15 | period.w 16 | start.l left as zero 17 | length.l 18 | repeat start.l 19 | repeat length.l 20 | */ 21 | 22 | void error( char *name ) 23 | { 24 | printf( "Error %s\n", name ); 25 | exit(1); 26 | } 27 | 28 | void main(int argc, char *argv[] ) 29 | { 30 | 31 | FILE *inf; 32 | FILE *outf; 33 | 34 | unsigned char name[20]; 35 | unsigned int priority; 36 | unsigned int period; 37 | unsigned long length; 38 | unsigned char loopflag; 39 | unsigned long repstart; 40 | unsigned long replen; 41 | 42 | unsigned long zero = 0; 43 | 44 | unsigned char null[50]; 45 | 46 | unsigned char InFilename[100]; 47 | unsigned char OutFilename[100]; 48 | 49 | if ( argc < 1 ) 50 | error( "insufficient args. Give root file name as only argument\n" ); 51 | 52 | strcpy( InFilename, argv[1] ); 53 | strcpy( OutFilename, argv[1] ); 54 | 55 | strcat( InFilename, ".dat" ); 56 | strcat( OutFilename, ".bin" ); 57 | 58 | inf=fopen( InFilename, "r" ); 59 | if (!inf) 60 | error( "Opening smp.dat for input" ); 61 | 62 | outf=fopen( OutFilename, "wb" ); 63 | if (!outf) 64 | error( "Opening smp.bin for output" ); 65 | 66 | while ( !feof(inf) ) 67 | { 68 | if ( fscanf( inf, "%20c%hd %hd %04x %1c", name, &priority, &period, &length, &loopflag ) != 5 ) 69 | exit(0); 70 | 71 | if (loopflag == 'L') 72 | { 73 | fscanf( inf, "%04x %04x", &repstart, &replen ); 74 | fgets( null, 50, inf ); 75 | } 76 | else 77 | { 78 | fgets( null, 50, inf ); 79 | repstart = 0; 80 | replen = 0; 81 | } 82 | 83 | /* now adjust values as required */ 84 | length<<=8; 85 | replen<<=8; 86 | 87 | 88 | /*output values */ 89 | fwrite( name, 1, 20, outf ); 90 | fwrite( &priority, 1, 2, outf ); 91 | fwrite( &period, 1, 2, outf ); 92 | fwrite( &zero, 1, 4, outf ); 93 | fwrite( &length, 1, 4, outf ); 94 | fwrite( &repstart, 1, 4, outf ); 95 | fwrite( &replen, 1, 4, outf ); 96 | } 97 | 98 | fclose( outf ); 99 | fclose( inf ); 100 | } 101 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/MK.LNK: -------------------------------------------------------------------------------- 1 | FROM c:\lc\lib\c.o+mk.o 2 | LIB c:\lc\lib\lc.lib 3 | TO mk.ttp 4 | NODEBUG 5 | BATCH 6 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/MK.O: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/MK.O -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/MK.TTP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/MK.TTP -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/SMP.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/SMP.BIN -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/SMP.DAT: -------------------------------------------------------------------------------- 1 | Engine Noise 1 01 428 11a0 L 0002 119e 2 | Player Shot Normal 202 428 08e8 - 3 | Engine Noise 03 428 3378 L 0c0e 2594 4 | Player Death 04 214 549a - 5 | Player Death 2 05 428 2458 - 6 | Player Shot Normal 06 428 07a4 - 7 | Player Jump 07 428 18de - 8 | Crackle 08 214 4594 - 9 | Cleared Level 09 428 37a2 - 10 | Warp 10 568 6ec8 - 11 | Large Explosion 11 428 50c2 - 12 | Powered Up Shot 12 428 1976 - 13 | Get Power Up 13 428 1aea - 14 | Tink For Spike 14 254 040e - 15 | NME At Top Of Web 15 428 001e - 16 | Pulse For Pulsar 16 856 19fe - 17 | Normal Explosion 17 214 2ab6 - 18 | Extra Explosion 18 856 18ca - 19 | Static or Pulsar 19 284 3fe4 - 20 | Pulsar Pulse 20 856 0f0c - 21 | Off Shielded NME 21 170 27ca - 22 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/SMP1.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/SMP1.BIN -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/SMP1.DAT: -------------------------------------------------------------------------------- 1 | Engine Noise 1 01 428 11a0 L 0002 119e 2 | Player Shot Normal 202 428 08e8 - 3 | Engine Noise 03 428 3378 L 0c0e 2594 4 | Player Death 04 214 549a - 5 | Player Death 2 05 428 2458 - 6 | Player Shot Normal 06 428 07a4 - 7 | Player Jump 07 428 18de - 8 | Crackle 08 214 4594 - 9 | Cleared Level 09 428 37a2 - 10 | Warp 10 568 6ec8 - 11 | Large Explosion 11 428 50c2 - 12 | Powered Up Shot 12 428 1976 - 13 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/SMP2.BIN: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/SMP/SMP2.BIN -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/SMP/SMP2.DAT: -------------------------------------------------------------------------------- 1 | Get Power Up 13 428 1aea - 2 | Tink For Spike 14 254 040e - 3 | NME At Top Of Web 15 428 001e - 4 | Pulse For Pulsar 16 856 19fe - 5 | Normal Explosion 17 214 2ab6 - 6 | Extra Explosion 18 856 18ca - 7 | Static or Pulsar 19 284 3fe4 - 8 | Pulsar Pulse 20 856 0f0c - 9 | Off Shielded NME 21 170 27ca - 10 | 11 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/TEST.DB: -------------------------------------------------------------------------------- 1 | #Created with FILEFIX version 5 2 | gag on 3 | read test.txt 4000 ; read test.dta 70d0 ; getsym test.sym 4 | gag off 5 | echo " start size end" 6 | echo "text 4000 30d0 70cf" 7 | echo "data 70d0 648 7717" 8 | echo "bss 8000 800 87ff" 9 | echo "Symbols loaded" 10 | xpc 4000 11 | -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/TEST.DTA: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/TEST.DTA -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/TEST.SYM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/TEST.SYM -------------------------------------------------------------------------------- /unused/t2kmusic94/TEMPEST/TEST.TXT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/unused/t2kmusic94/TEMPEST/TEST.TXT -------------------------------------------------------------------------------- /unused/yak.db: -------------------------------------------------------------------------------- 1 | #Created with FILEFIX version 5 2 | gag on 3 | read yak.txt 802000 ; read yak.dta 4000 ; getsym yak.sym 4 | gag off 5 | echo " start size end" 6 | echo "text 802000 1e090 82008f" 7 | echo "data 4000 afa8 efa7" 8 | echo "bss efa8 9d98 18d3f" 9 | echo "Symbols loaded" 10 | xpc 802000 11 | -------------------------------------------------------------------------------- /utils/CreateCart.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ 4 | Extract the binary components from the original t2k rom 5 | """ 6 | 7 | import sys 8 | import os 9 | 10 | if len(sys.argv) < 2: 11 | print("Not enough filenames given") 12 | exit() 13 | 14 | romname = sys.argv[1] 15 | rom = open(romname, 'wb') 16 | 17 | args = len(sys.argv) 18 | 19 | for fn in sys.argv[1:]: 20 | if not os.path.isfile(fn): 21 | print(fn + " does not exist") 22 | exit() 23 | f = open(fn, 'rb') 24 | rom.write(f.read()) 25 | 26 | 27 | -------------------------------------------------------------------------------- /utils/ExtractObjectFilesFromAbsFile.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ 4 | Extract the binary components from the linked abs file created by `make` 5 | """ 6 | 7 | import sys 8 | import os 9 | from itertools import chain 10 | 11 | d = open("ourrom/details.txt", 'w') 12 | 13 | f = open("../t2k.abs", 'rb') 14 | bs = f.read() 15 | 16 | o = open("ourrom/romheader.bin", 'wb') 17 | o.write(bs[:0xa4]) 18 | 19 | o = open("ourrom/yak.o", 'wb') 20 | o.write(bs[0xa8:0x18440]) 21 | 22 | o = open("ourrom/vidinit.o", 'wb') 23 | o.write(bs[0x18440:0x184F8]) 24 | 25 | o = open("ourrom/yakgpu.o", 'wb') 26 | o.write(bs[0x184f8:0x1e138]) 27 | 28 | s = 0x1e138 29 | l = [0x1f400 - 0x90, 0x1f400, 0x25800, 0x14000,0x1f400,0x1f400] 30 | for i in range(3,9): 31 | o = open("ourrom/beasty" + str(i) + ".cry", 'wb') 32 | e = s + l[i-3] 33 | o.write(bs[s:e]) 34 | print("ourrom/beasty" + str(i) + ".cry",hex(s),hex(e), file=d) 35 | s = e 36 | 37 | fs = ["tune13.mod", "tune7.mod", "tune1.mod", "tune3.mod", "rave4.mod", "tune5.mod", "tune12.mod"] 38 | for f in fs: 39 | nb = os.path.getsize("../src/sounds/" + f) 40 | e = s+nb 41 | ob = bs[s:e] + b'\x00\x00\x00\x00' 42 | print(f,hex(s),hex(e), file=d) 43 | o = open("ourrom/" + f, 'wb') 44 | o.write(ob) 45 | s = e + 4 46 | 47 | s += 4 48 | fs = ["smp.bin"] 49 | for f in fs: 50 | nb = os.path.getsize("../src/" + f) 51 | e = s+nb 52 | ob = bs[s:e] 53 | o = open("ourrom/" + f, 'wb') 54 | o.write(ob) 55 | print(f, hex(s), hex(e), file=d) 56 | s = e 57 | 58 | l = chain(range(1,4), range(6,31), [15]) 59 | for f in [("0"+str(i))[-2:] for i in l]: 60 | nb = os.path.getsize("../src/sounds/samples/" + f) 61 | e = s+nb 62 | ob = bs[s:e] + b'\x00\x00\x00\x00' 63 | print(f,hex(s),hex(e), file=d) 64 | o = open("ourrom/" + f, 'wb') 65 | o.write(ob) 66 | s = e + 4 67 | 68 | s += 4 69 | print(hex(s), file=d) 70 | o = open("ourrom/paddingaftersamples.bin", 'wb') 71 | o.write(bs[s:]) 72 | 73 | -------------------------------------------------------------------------------- /utils/ExtractObjectFilesFromRom.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ 4 | Extract the binary components from the original t2k rom 5 | """ 6 | 7 | import sys 8 | import os 9 | from itertools import chain 10 | 11 | d = open("originalrom/details.txt", 'w') 12 | 13 | f = open("../orig/t2k.jag", 'rb') 14 | bs = f.read() 15 | 16 | o = open("originalrom/romheader.bin", 'wb') 17 | o.write(bs[:0x2000]) 18 | 19 | o = open("originalrom/yak.o", 'wb') 20 | o.write(bs[0x2000:0x1a398]) 21 | 22 | o = open("originalrom/obj2dat.o", 'wb') 23 | o.write(bs[0x181ea:0x197fa]) 24 | 25 | o = open("originalrom/vidinit.o", 'wb') 26 | o.write(bs[0x1a398:0x1a450]) 27 | 28 | o = open("originalrom/yakgpu.o", 'wb') 29 | o.write(bs[0x1a450:0x20090]) 30 | 31 | # Extract the gpu binaries 32 | s = 0x1a450 + 0xd6 33 | # antelope has 0xe48 in the header but is actually 0xe4a long 34 | # ox has 0xa3c in the header but is actually 0xa3e long 35 | fs = [("llama.o",0xa82, 8), ("goat.o",0xc46, 8), ("antelope.o",0xe4a, 8), ("camel.o",0x68a, 8), 36 | ("xcamel.o",0xd32, 8), ("stoat.o",0x2f6, 8), ("ox.o",0xa3e, 8), ("horse.o",0xb4a, 8), ("donky.o",0x9e0, 8)] 37 | for f, nb, skip in fs: 38 | print("DC.L " + "$" + bs[s:s+skip].hex()[:8], ", $" + bs[s:s+skip].hex()[8:], file=d) 39 | s += skip 40 | e = s + nb 41 | ob = bs[s:e-2] 42 | print(f,hex(s),hex(e), file=d) 43 | o = open("originalrom/" + f, 'wb') 44 | o.write(ob) 45 | s = e - 2 46 | 47 | # the first image has the first 0x90 bytes chopped off for some reason, probably accidental. 48 | s = 0x20090 49 | l = [0x1f400 - 0x90, 0x1f400, 0x25800, 0x14000,0x1f400,0x1f400 + 0x100] 50 | for i in range(3,9): 51 | o = open("originalrom/beasty" + str(i) + ".cry", 'wb') 52 | e = s + l[i-3] 53 | o.write(bs[s:e]) 54 | print("originalrom/beasty" + str(i) + ".cry",hex(s),hex(e), file=d) 55 | s = e 56 | 57 | o = open("originalrom/paddingbetweencryandmod.bin", 'wb') 58 | o.write(bs[0xd6800:0xd6900]) 59 | 60 | s = 0xd6900 61 | fs = ["tune13.mod", "tune7.mod", "tune1.mod", "tune3.mod", "rave4.mod", "tune5.mod", "tune12.mod"] 62 | for f in fs: 63 | nb = os.path.getsize("../src/sounds/" + f) 64 | e = s+nb 65 | ob = bs[s:e] + b'\x00\x00\x00\x00' 66 | print(f,hex(s),hex(e), file=d) 67 | o = open("originalrom/" + f, 'wb') 68 | o.write(ob) 69 | s = e + 4 70 | 71 | o = open("originalrom/paddingbetweentunesandsmp.bin", 'wb') 72 | o.write(bs[s:0x1ac800]) 73 | 74 | s = 0x1ac800 75 | fs = ["smp.bin"] 76 | for f in fs: 77 | nb = os.path.getsize("../src/" + f) 78 | e = s+nb 79 | ob = bs[s:e] 80 | o = open("originalrom/" + f, 'wb') 81 | o.write(ob) 82 | print(f, hex(s), hex(e), file=d) 83 | s = e 84 | 85 | o = open("originalrom/paddingbetweensmpandsamples.bin", 'wb') 86 | o.write(bs[s:0x1acd00]) 87 | 88 | s = 0x1acd00 89 | l = chain(range(1,4), range(6,31), [15]) 90 | for f in [("0"+str(i))[-2:] for i in l]: 91 | nb = os.path.getsize("../src/sounds/samples/" + f) 92 | e = s+nb 93 | ob = bs[s:e] + b'\x00\x00\x00\x00' 94 | print(f,hex(s),hex(e), file=d) 95 | o = open("originalrom/" + f, 'wb') 96 | o.write(ob) 97 | s = e + 4 98 | 99 | s -= 4 100 | print(hex(s), file=d) 101 | o = open("originalrom/paddingaftersamples.bin", 'wb') 102 | o.write(bs[s:]) 103 | 104 | -------------------------------------------------------------------------------- /utils/bin2dat.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import sys 3 | import os 4 | 5 | if len(sys.argv) < 2: 6 | print("No filename given") 7 | exit() 8 | 9 | fn = sys.argv[1] 10 | if not os.path.isfile(fn): 11 | print(fn + " does not exist") 12 | exit() 13 | 14 | f = open(fn, 'rb') 15 | 16 | on = sys.argv[2] 17 | o = open(on, 'w') 18 | 19 | if len(sys.argv) == 4: 20 | start = sys.argv[3] 21 | f.read(int(start)) 22 | 23 | line = [] 24 | while True: 25 | bs = "$" + f.read(4).hex().upper() 26 | if len(bs) == 1: 27 | break 28 | line.append(bs) 29 | if len(line) < 4: 30 | continue 31 | o.write("DC.L " + ','.join(line) + '\n') 32 | line = [] 33 | if line: 34 | o.write("DC.L " + ','.join(line) + '\n') 35 | 36 | -------------------------------------------------------------------------------- /utils/filefix.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/utils/filefix.exe -------------------------------------------------------------------------------- /utils/t2k.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwenge/tempest2k/8b50b467ce7dd7eee475aaf5ae86804d95401ae7/utils/t2k.exe -------------------------------------------------------------------------------- /utils/t2kreadme.txt: -------------------------------------------------------------------------------- 1 | Jaguar Tempest 2000 Emulator 2 | 3 | (approximate) 4 | Minimum Requirements: 500MHz or greater (should work with throttle) 5 | Recommended Requirements: 1GHz or greater. 6 | For games other than Tempest 2000, the faster the better... 7 | 8 | DirectX 9 is required. Windows XP may or may not be required. 9 | 10 | Starscream 680x0 emulation library by Neill Corlett 11 | (corlett@elwha.nrrc.ncsu.edu) 12 | 13 | This software also makes use of the excellent LibPNG and Zlib, both 14 | available at Sourceforge. 15 | 16 | THIS EMULATOR IS PROVIDED WITH NO WARRANTY, INCLUDING IMPLIED WARRANTIES, 17 | ETC. IT IS A BETA PRODUCT THAT IS KNOWN NOT TO BE THOROUGHLY DEBUGGED, AND 18 | HAS PREVIOUSLY CONTAINED AT LEAST ONE BUG THAT CAN UNRECOVERABLY CRASH A 19 | SYSTEM. YOU USE IT ENTIRELY AT YOUR OWN RISK. 20 | 21 | 22 | Keys: 23 | ---- 24 | 25 | F1 - Fullscreen toggle 26 | F3 - Enable Music device capture 27 | F4 - Show Music Input 28 | F6 - Load State 29 | F7 - Save State 30 | F11 - Throttle toggle 31 | F12 - Screenshot 32 | O - option 33 | P - pause 34 | Z/Ctrl - A 35 | X/ALT - B 36 | C/Space - C 37 | Arrow keys 38 | Numeric keypad (. is #) 39 | Q - three-fingered salute (used on the flashing CD with ?) to engage VLM 40 | Esc - Quit 41 | 42 | VLM: press Z (button A) twice to enter program mode, press O to engage 43 | user programmable mode, then the numeric pad or numbers: first press is 44 | bank, second press is effect in bank. 45 | 46 | Joypads are supported. 47 | 48 | Mouse-as-spinner mode is only loosely tested and probably not well 49 | calibrated. Pause hits both pause keys so can be used to enable spinner 50 | mode in game. Note that if spinner mode is enabled it is saved in the 51 | EEPROM. 52 | 53 | 54 | 55 | 56 | 57 | The game defaults to unthrottled operation, in which it assumes the blitter 58 | and GPU have infinite speed. This makes Tempest 2000 run at 60fps at all 59 | times. Throttling will take GPU and blitter into account and run more 60 | realistically as in the real hardware. This also reduces the load on the host 61 | CPU and will probably be required for processors under about 1GHz. 62 | 63 | MOST GAMES OTHER THAN T2K REQUIRE THROTTLED OPERATION 64 | 65 | The latest versions use native sound rather than emulating the DSP under Tempest 66 | 2000. The cost of sound is well down under previous versions. Native sound can 67 | be forced off from the menu. With throttling this should enable T2K to run even on 68 | slow processors or in low CPU power states. It does not need to be manually disabled 69 | on games other than Tempest 2000. 70 | 71 | The emulator can yield unneeeded CPU time to the operating system. This may 72 | cause stuttering on CPU's with dynamic clocking if the CPU ends up bouncing 73 | between two power states. SpeedswitchXP is your friend. 74 | 75 | Smoothing toggles between point sampling and bilinear interpolation filtering 76 | of the upscale of the Jaguar screen. Select your preference accordingly for 77 | chunky pixels or Telly-O-Vision. 78 | 79 | EEPROM saves are placed in directory assigned in the options, which defaults to 80 | the All Users Application Data directory (in theory, although they have been 81 | sighted in the application directory, the rom directory, and frankly just about 82 | anywhere else it feels like it). 83 | 84 | In PAL mode (selected by adding -pal on the command line) you can see slightly 85 | more of the web, but the 50Hz refresh rate will not look as smooth. The game 86 | also feels very slightly different. 87 | 88 | If you have an older DX7 card then you may find that the emulator's screen size 89 | does not resize with the window; in this case you must use fullscreen mode. You 90 | may find it doesn't work at all, although I hope that is no longer the case. 91 | 92 | SAVE STATES ARE NOT COMPATIBLE BETWEEN VERSIONS. 93 | 94 | 95 | 96 | VLM Music 97 | --------- 98 | 99 | Old method - attach a WAV file. This has no level control. 100 | 101 | Preferred now: select 'Music input is output' from the settings menu, which will 102 | take the currently running sound output. If there is more than one sound capture 103 | device in the system it will offer you a choice. You may also need to double-click 104 | the speaker icon in the taskbar, select properties/recording and map the input to 105 | Wave or Stereo Mix (or similar using the sound card's own control). 106 | 107 | The level will need to be adjusted to make VLM's triggers work properly - VLM 108 | is at it's most fascinating when the levels are well balanced, and it's 109 | particularly important for music genres like rock which are rich across the 110 | entire audio spectrum. 111 | 112 | If you select 'Show music input' (F4) it will give a level graph, and the 113 | input level scaling can be adjusted with the up and down keys while it is 114 | displayed. Setting it so the peak red line tends to be around the blue guide 115 | and rarely dramatically exceeds it should give reasonable results. You can 116 | also use your music program's level control. This option works best on the 117 | "Waiting for CD" screen - once VLM itself is running results will be less 118 | consistent. 119 | 120 | Another good option is to use Bank 3 effect 3 (swirling squares) - if this 121 | is always very dark it's too quiet for VLM's internal triggers, while if it's 122 | always extremely bright then it's probably too loud. A nice balance should give 123 | excellent results. 124 | 125 | VLM will happily eat up every emulated cycle most PC's can generate, and so you 126 | may find either VLM or the music replay stuttering unless you have a very 127 | high-spec machine. If this happens, turning on Throttle and Yield will usually 128 | improve matters. 129 | 130 | 131 | 132 | Known / Suspected Bugs: 133 | ---------------------- 134 | 135 | The game must be throttled to play the track bonus levels. Unless you like it tricky. 136 | 137 | Yield mode is also frequently slightly drunken music mode. 138 | 139 | EEPROM saving and loading has previously proved a bit less reliable than it should 140 | be, but this should be fixed with the specific setting of the eeprom save 141 | directory. 142 | 143 | Throttled mode cannot throttle the blitter slower than one blit per frame. 144 | 145 | Dialog boxes often do not appear if the game is in fullscreen mode. If you repeatedly 146 | close it with escape and reopen then it will usually appear after a few tries. Yes, 147 | D3D has a flag that fixes this. No, I can't get it to work. 148 | 149 | Switching out of fullscreen mode used to crash some nvidia systems with a Blue 150 | Screen Of Death (or the Windows XP equivalent of the Silent Reboot). It seems 151 | that 0.05 has fixed this but users should still be aware of the issue. 152 | 153 | The joystick button mapping isn't very clever. In particular, there is no keyboard 154 | command to escape from it. 155 | 156 | 157 | 158 | Kind of not bugs: 159 | ---------------- 160 | 161 | Windowed mode suffers tearing artifacts due to the lack of sync with vertical 162 | retrace. Fullscreen should not have these, but may not be perfectly smooth if 163 | the fullscreen refresh rate is not 60Hz or in PAL mode. 164 | 165 | 166 | 167 | Version history 168 | --------------- 169 | 170 | 0.06: (Core) 171 | Experimented with an alternate memory access method, which didn't help performance much 172 | Halved timeslice sizes 173 | Move CLUT to be a memory region rather than part of the chip 174 | Compute buffer size and pixel aspect ratio accurately in the OP, pass to window system 175 | Cleaned up CPU and RISC interrupt systems, added CPU stop object interrupt 176 | Rewrote Tom PIT to the correct spec (and fixed the stall bug I found in it too) 177 | Rewrote Jerry PIT to correct an awful inaccuracy. However, to get AvP sound right 178 | I had to add a hack to multiply the rate by 4. I don't understand why, I don't 179 | know where the bug is, and in particular I don't know if I should apply the same 180 | hack to the Tom PIT as well. 181 | Fixed a bug that was causing writes to the start of some memory regions to be misdirected 182 | Rewrote OP towards optional line-granularity 183 | Added option to disable DSP altogether 184 | Added all DSP wavetables, or at least guesses at same 185 | Hacked around a problem that was causing the 'superzapper recharge' sample not to appear in T2K. Also 186 | hacked the 'gappy sample' issue by slowing the music replay rate down 2% in the native 187 | sound routine 188 | GPU/Risc fixes: truly embarassing bug with sat8, equally rubbish bug with move pc, 189 | MMULT instruction, kick off small timeslice on all RISC starts to avoid race if the RISC 190 | sets a status flag which the 68k then checks, possibly the largest bug in the history 191 | of errors in RISC interrupts (which weren't saving flags), ADDQMOD instruction, 192 | PACKUNPACK instruction, PC register, hidata register 193 | OP bugfixes: don't infinite loop on zero vscale, abort if hit address zero, fully 194 | clipped objects off left side fix, some colour transparency, RGB16 conversion 195 | was incorrect, scaled objects needed signed height, 8-bit OP scaled objects, 196 | improved horizontal scaling accuracy, added RGB24 mode 197 | Blitter bugfixes: bit to pixel expansion bits were reversed bit order, 32bpp phrasemode 198 | blits were using wrong address mask, moved srcshade inside transparency check, fixed 199 | 8-bit phrasemode blit alignment several times, added byte-to-phrase blits 200 | Blitter improvements: added blitter A1 inc sign, added blitter Y inc, added 8-bit 201 | srcshade, additive blits 202 | (Debugger) 203 | Track RISC history (some of these need compile switches) 204 | Append register name comments to disasm output 205 | Added help menu in debugger because I'm too stupid to remember my own commands 206 | Tidied up some registers 207 | Kill OP object option 208 | (Windows) 209 | Fixed fullscreen on certain widescreen machines 210 | Connected OP screen width hook 211 | Went up to W4 and fixed most of the additional warnings 212 | Reversed left and right sound channels 213 | Fixed the remaining bugs with fastcall and switched to it, for a small performance gain 214 | Added joystick button configuration 215 | (All) 216 | Clean up headers, clearly define core/window system interface 217 | 0.05: (Core) 218 | Blitter speed optimisations 219 | RISC core speed optimisations 220 | OP speed optimisations (contributed by Gary Liddon) 221 | Screen capture support 222 | Defender 2000 compatibility fixes (some contributed by David Bateman) 223 | Native sound for T2K to avoid high DSP load 224 | (Windows) 225 | Rewrote keyboard system 226 | Rewrote D3D fullscreen switch - should have fixed fullscreen change crash 227 | Fixed D3D cards that support StretchRect but need no filter specified 228 | Options dialog box for configuring controls and directories 229 | Saves options into registry 230 | Avoid window shrink with repeated restart or fullscreen switch 231 | Made fullscreen mode select a wide ratio mode if desktop is in a widescreen mode 232 | 0.04: Fixed no joystick support 233 | Added sound capture and level meter 234 | More internal work for porting 235 | 0.03: Cleaned up fullscreen code a little 236 | Cleared all fullscreen backbuffers at init 237 | Added automatic resizing of window if too big for screen 238 | Fixed (in theory) mono and 8-bit WAV files 239 | Added joystick/joypad support 240 | Internal code cleaning in preparation for Mac/Linux ports 241 | 0.02: Fixed bug with some video cards 242 | 0.01: First release 243 | 244 | 245 | 246 | 247 | Rough compatibility list (only a few games tried): 248 | 249 | Seem Playable: 250 | 251 | Tempest 2000: The shaded web is not exactly matching up with the line web, and there 252 | are sometimes thin stripy lines on horizontal left-of-centre segments. 253 | 254 | VLM: bank 4 effects flicker with throttle enabled. 255 | 256 | Defender 2000: Classic and Plus have no screen, although it sounds like the game is 257 | running. 2000 mode mostly works but it looks like the 'assistant' ship is broken. 258 | 259 | Trevor McFur In The Crescent Galaxy: White objects shoot black, near-invisible 260 | bullets, which doesn't seem right. 261 | 262 | Sensible Soccer: Looks fine, although I'm not sure what's going on with save/load. 263 | 264 | 265 | Not playable: 266 | 267 | Alien vs Predator: Graphical glitches. Marine mode broken. Marines do not shoot at player. 268 | 269 | Doom: Panel is distorted. Game sticks as soon as you move. 270 | 271 | 272 | 273 | --------------------------------------------------------------------------------