mirror of
https://github.com/antoinevignau/source.git
synced 2024-12-30 18:31:21 +00:00
129 lines
3.9 KiB
ArmAsm
129 lines
3.9 KiB
ArmAsm
*
|
|
* Moon Patrol
|
|
*
|
|
* (c) 1982, Williams
|
|
* (c) 1983, Atari
|
|
* (s) 2024, Antoine Vignau
|
|
*
|
|
|
|
ORG $0800
|
|
MX %11
|
|
|
|
*-----------------------------------
|
|
* FIRMWARE EQUATES
|
|
*-----------------------------------
|
|
|
|
KBD EQU $C000
|
|
KBDSTROBE EQU $C010
|
|
TAPEOUT EQU $C020
|
|
SPKR EQU $C030
|
|
TXTCLR EQU $C050
|
|
TXTSET EQU $C051
|
|
MIXCLR EQU $C052
|
|
TXTPAGE1 EQU $C054
|
|
TXTPAGE2 EQU $C055
|
|
HIRES EQU $C057
|
|
BUTN0 EQU $C061
|
|
RESET EQU $FA62
|
|
PREAD EQU $FB1E
|
|
WAIT EQU $FCA8
|
|
|
|
*-----------------------------------
|
|
* SPRITES 1
|
|
|
|
sprWHEEL = 0 ; wheel
|
|
sprVEHICLE = 1 ; car
|
|
sprVERTICALSHOOT = 2 ; vertical shoot
|
|
sprHORIZONTALSHOOT = 3 ; horizontal shoot
|
|
sprHEXPLOSION1 = 4 ; horizontal explosion animation step #1
|
|
sprHEXPLOSION2 = 5 ; horizontal explosion #2
|
|
sprHEXPLOSION3 = 6 ; horizontal explosion #3
|
|
sprHEXPLOSION4 = 7 ; horizontal explosion #4
|
|
sprENEMY11 = 8 ; enemy 1 #1
|
|
sprENEMY12 = 9 ; enemy 1 #2
|
|
sprENEMY13 = 10 ; enemy 1 #3 A
|
|
sprENEMY14 = 11 ; enemy 1 #4 B
|
|
sprENEMY2 = 12 ; enemy 2 C
|
|
sprENEMY3 = 13 ; enemy 3 D
|
|
sprSMALLROCK = 14 ; small rock E
|
|
sprBIGROCK = 15 ; big rock F
|
|
sprTANK = 16 ; tank 10
|
|
sprMINE1 = 17 ; mine #1 11
|
|
sprMINE2 = 18 ; mine #2 12
|
|
sprSMALLHOLE = 19 ; small hole 13
|
|
sprMEDIUMHOLE = 20 ; medium hole (enemy 1) 14
|
|
sprBIGHOLE = 21 ; big hole 15
|
|
sprMUSHROOM1 = 22 ; mushroom #1 16
|
|
sprMUSHROOM2 = 23 ; mushroom #2 17
|
|
sprENEMYVEHICLE = 24 ; enemy vehicle 18
|
|
|
|
*-----------------------------------
|
|
* SPRITES 2 (EXPLOSIONS)
|
|
|
|
sprENEMYEXPLOSION1 = 0 ; 0
|
|
sprENEMYEXPLOSION2 = 1 ; 1
|
|
sprBOMBEXPLOSION1 = 2 ; 2
|
|
sprBOMBEXPLOSION2 = 3 ; 3
|
|
sprBOMBEXPLOSION3 = 4 ; 4
|
|
sprBOMBEXPLOSION4 = 5 ; 5
|
|
sprCAREXPLOSION1 = 6 ; 6
|
|
sprCAREXPLOSION2 = 7 ; 7
|
|
sprCAREXPLOSION3 = 8 ; 8
|
|
sprENEMY3BOMB = 9 ; 9
|
|
sprENEMY1BOMB = 10 ; A
|
|
sprHORIZONTALBAR = 11 ; B
|
|
sprRAINBOWEXPLOSION1 = 12 ; C
|
|
sprRAINBOWEXPLOSION2 = 13 ; D
|
|
sprSMALLEXPLOSION = 14 ; E
|
|
sprSCORE100 = 15 ; F
|
|
sprSCORE500 = 16 ; 10
|
|
sprSCORE800 = 17 ; 11
|
|
sprSCORE1000 = 18 ; 12
|
|
|
|
*-----------------------------------
|
|
* GAME VARIABLES
|
|
*-----------------------------------
|
|
|
|
NB_LIVES = 4 ; which are 3+1 as the programmer uses BNE and not BPL for the end
|
|
|
|
P1_courseTYPE = $200 ; byte - beginner or champion course for P1
|
|
P2_courseTYPE = $201 ; byte - beginner or champion course for P2
|
|
P1_point = $202 ; byte - point reached by P1
|
|
P2_point = $203 ; byte - point reached by P2
|
|
P1_score = $204 ; adr - $204 and $206 and $208
|
|
P2_score = $205 ; adr - $205 and $207 and $209
|
|
coursePTR1 = $20a ; word - $20a and $20c
|
|
coursePTR2 = $20b ; word - $20b and $20d
|
|
P1_basePOINT = $20e ; byte - current base point of P1
|
|
P2_basePOINT = $20f ; byte - current base point of P2
|
|
P1_plrCOURSE = $210 ; word - $210 and $212
|
|
P2_plrCOURSE = $211 ; word - $211 and $213
|
|
P1_nbLIVES = $214 ; byte
|
|
P2_nbLIVES = $215 ; byte
|
|
courseTYPE = $216 ; byte - 0 = beginner, 1 = champion
|
|
nbPLAYERS = $217 ; byte - 0 = 1 player, 1 = 2 players
|
|
nbLIVES = $218 ; byte - nb lives + 1
|
|
fgINPUT = $219 ; byte - 0 = keyboard, 1 = joystick
|
|
theBONUS = $21a ; adr - $21a and $21b and $21c - bonus to add to score
|
|
charWAIT = $21d ; byte - time to wait between drawing two chars
|
|
curRANGE = $21e ; byte - 0/2/4/6/8 mean A/E/J/O/T
|
|
fgBONUS = $21f ; byte - 0 = bonus, 1 = no bonus
|
|
fgBESTTIME = $220 ; byte - 0 = no best time, 1 = best time
|
|
* $221 is not used
|
|
fgDEMO = $222 ; byte - 0 = game mode, 1 = demo mode (replay?)
|
|
demoINDEX = $223 ; byte - index for demo data
|
|
demoCNT = $224 ; byte - demo frame counter * $224
|
|
fgDEMO2 = $225 ; byte - 0 = game mode, 1 = demo mode
|
|
coursePTR3 = $226 ; word - pointer to course data
|
|
coursePTR4 = $228 ; word - pointer to course data
|
|
curPLAYER = $22a ; byte - 0 = player 1, 1 = player 2
|
|
P1_time = $22b ; word - and $22d
|
|
P2_time = $22c ; word - and $22e
|
|
highSCORE = $22f ; adr - the high score
|
|
timePLAYER = $232 ; word - player time on course range (A to E, E to J...)
|
|
courseTYPE_unused = $234 ; byte - copy of courseTYPE (unused)
|
|
fgBLINK = $235 ; byte -0/1 = blinks 1UP/2UP
|
|
|
|
L0300 = $300
|
|
|