├── .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^^ `vtat[!!!!!!!]1e7L#C#uz7LTLeIx^^ -i=^+)ir!1[]!]1e7L#C#uz7LTCwwCTLeov===
5 | ; .=ltuTza[!II?]teznTL7atz#JJCu?\_ "/`%FFne1!!!???I?]teznTL7atz#JJCu?\_ "/-)`=ltuTza[!II?]teznTL7at7u###nL3C<
6 | ; >?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)|= /).\|^="!jTLo1]?II![e7uTnzetoLT###LCy1 _).<^'>!jTLo1]?II![e7uTnzetoLT###LCy1
23 | ; |7yo<\\\))||""//+++====^^=="ie#u[) _).\)lajtc<||))||""/++====^^^^;;;,sL! _).\)lajtc<||))||""/++====^^^^;;;,sL!
24 | ; |tT1>>>%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 |
--------------------------------------------------------------------------------