This commit is contained in:
Antoine Vignau 2024-02-24 21:36:24 +01:00
parent 1c03eb3e3d
commit bcbca2639c
13 changed files with 25889 additions and 15929 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -79,7 +79,7 @@ L6056 LDA #$00
STA tempX6
STA demoREPEAT
lda #<demoDATA
STA ptrDEMO ; demo actions
sta ptrDEMO ; demo actions
LDA #>demoDATA
STA ptrDEMO+1
LDA #nbLIVES ; 5 men to start with
@ -262,7 +262,9 @@ L61F6 STAl KBDSTROBE
BEQ L6211
CMP #chrRET ; Return
BEQ L61E4
cmp #chrCTRLQ ; ctrl-Q - quit
beq L6212
L6201 LDX #$00
STX intLEVEL
INX
@ -273,10 +275,15 @@ L6201 LDX #$00
JMP L6056
L6211 JMP enterEDITOR ; Jump to the Editor
L6212 jmp meQUIT ; bye for now
*----------
L6214 HEX 000306090C0F121518 ; 0..3..6..9..12..15..18..21..24 (index in 6CA7)
L621D HEX 26262E4447494A4B4C4D4E4F50
*----------
scoreSOUND LDA temp1 ; son pour le score
ASL
ASL
@ -1507,18 +1514,18 @@ getPLAYERINPUT
LDA fgDEMO
CMP #$01
BEQ L69B8
LDal KBD
STal KBDSTROBE
STa theA
ldal KBD
stal KBDSTROBE
STA theA
BMI L6A2B
LDA fgINPUT
CMP #chrK
BEQ L6A55
L6A28 JMP getJOYSTICKKEY
L6A2B Cmp #chrSPC
L6A2B CMP #chrSPC ; skip if game key
BCS L6A49
STa theA
STA theA
LDY #$FF
L6A33 INY
LDA tblKEY,Y
@ -1534,14 +1541,28 @@ L6A33 INY
PHA
RTS
L6A49 LDA fgINPUT
* C1..DA 1100_0001 1101_1010
* E1..FA 1110_0001 1111_1010
L6A49 LDA fgINPUT ; joystick?
CMP #chrJ
BEQ L6A28
LDX theA
STX theKEY1
STX theKEY2
BEQ L6A28 ; yes
ldal $c034
inc
stal $c034
* LDX theA ; no
* STX theKEY1
* STX theKEY2
lda theA ; support des minuscules
and #%1101_1111
sta theA
sta theKEY1
sta theKEY2
L6A55 RTS
*-------------------------------
* 9E - CTRL-^ - NEXT LEVEL
*-------------------------------
@ -1600,18 +1621,29 @@ doTOGGLESOUND
JMP getPLAYERINPUT
*-------------------------------
* 8A - DOWN ARROW - MOVE LEFT
* 8A - CTRL-J - SET JOYSTICK MODE
*-------------------------------
doDOWNARROW LDA #chrJ
doSETJOYSTICK
LDA #chrJ
STA fgINPUT
JMP getPLAYERINPUT
*-------------------------------
* 8B - UP ARROW - MOVE DOWN
* 8B - CTRL-K - SET KEYBOARD MODE
*-------------------------------
doUPARROW LDA #chrK
doSETKEYBOARD
LDA #chrK
STA fgINPUT
JMP getPLAYERINPUT
*-------------------------------
* 90 - CTRL-P - SET JOYPAD MODE
*-------------------------------
doSETJOYPAD
LDA #chrP
STA fgINPUT
JMP getPLAYERINPUT
@ -1649,7 +1681,7 @@ doSLOWDOWN LDA theSPEED
*-------------------------------
doSPEEDUP LDA theSPEED
CMP #$0F
CMP #$1f ; on ajoute 16 valeurs de tempo
BEQ L6ACD
INC theSPEED
L6ACD JMP getPLAYERINPUT
@ -1724,23 +1756,24 @@ L6B56 STA theKEY1
RTS
*----------------------------------
* KEYS AND ASSOCIATED JUMPS
* KEYS AND ASSOCIATED JUMPS + -
*----------------------------------
tblKEY HEX 9E809B9281938A8B889598998D00
tblKEY HEX 9E,80,9B,92,81,93,8A,8B,90,88,95,98,99,8D,00
tblKEYADR DA doNEXTLEVEL-1 ; 9E - CTRL-^
DA doEXTRAMAN-1 ; 80 - CTRL-@
DA doPAUSE-1 ; 9B - ESCAPE
DA doPAUSE-1 ; 9B - ESCAPE
DA doTERMINATE-1 ; 92 - CTRL-R
DA doABORTMAN-1 ; 81 - CTRL-A
DA doTOGGLESOUND-1 ; 93 - CTRL-S
DA doDOWNARROW-1 ; 8A - DOWN ARROW
DA doUPARROW-1 ; 8B - UP ARROW
DA doSPEEDUP-1 ; 88 - LEFT ARROW
DA doSLOWDOWN-1 ; 95 - RIGHT ARROW
DA doFLIPX-1 ; 98 - CTRL-X
DA doFLIPY-1 ; 99 - CTRL-Y
DA doSETJOYSTICK-1 ; 8A - CTRL-J
DA doSETKEYBOARD-1 ; 8B - CTRL-K
DA doSETJOYPAD-1 ; 90 - CTRL-P
DA doSPEEDUP-1 ; 88 - SPEED UP
DA doSLOWDOWN-1 ; 95 - SLOW DOWN
DA doFLIPX-1 ; 98 - CTRL-X
DA doFLIPY-1 ; 99 - CTRL-Y
DA displayHIGHSCORES-1 ; 8D - RETURN
joyXMIN DB minJOY ; x-low
@ -3743,9 +3776,6 @@ setHGRPOINTERS
*-------------------------------
clearHGR1
* LDA #>oldHGR1
* LDX #>oldHGR2 ; >HGR1+$20
* BNE L7A5B
lda ptrSCREEN+2
ldx ptrSCREEN+1
ldy ptrSCREEN
@ -3756,30 +3786,16 @@ clearHGR1
*-------------------------------
clearHGR2
* LDA #>oldHGR2
* LDX #>oldHGR3 ; >HGR2+$20
lda #^HGR2
ldx #>HGR2
ldy #<HGR2
*--- clear now
L7A5B
* STA ptrDATA+1
* LDA #$00
* STA ptrDATA
* TAY
* LDA #$80
*]lp STA [ptrDATA],Y
* INY
* BNE ]lp
* INC ptrDATA+1
* CPX ptrDATA+1
* BNE ]lp
sta ptrDATA+2 ; save address
L7A5B sta ptrDATA+2 ; save address
stx ptrDATA+1
sty ptrDATA
rep #$30
ldy #$7cfe ; everything but SCB and Palette
lda #0
@ -3985,10 +4001,6 @@ enterEDITOR LDA #$00
STA theSCORE+1
STA theSCORE+2
STA theSCORE+3
* LDA CSWL
* STA CH
* LDA CSWH
* STA CV
LDA #$05
STA theMEN
STA fgDEMO
@ -4756,7 +4768,7 @@ L82B4 STA hgrPAGE ; page in $1F
and #$ff
asl
tax
lda tblSPRITES,x
patchSPR1 lda tblSPRITES,x
sta ptrSPR
lda #sprHEIGHT
@ -4799,12 +4811,10 @@ outerCOUT lda #0
* draw a sprite at real HGR X,Y (eg. 175,111)
drawSPRITEXY
stx theXSCREEN
STY theYSCREEN
STA theA
jsr setHGRPOINTERS
* JSR getXBYBI
lda xbytable,X
sta theXSCREEN
rep #$30
@ -4819,7 +4829,7 @@ drawSPRITEXY
and #$ff
asl
tax
lda tblSPRITES,x
patchSPR2 lda tblSPRITES,x
sta ptrSPR
lda #sprHEIGHT
@ -4868,12 +4878,10 @@ outerDSXY lda #0
* <>00 if collision
drawSPRXYCOLLISION
stx theXSCREEN
STY theYSCREEN
STA theA
jsr setHGRPOINTERS
* JSR getXBYBI
lda xbytable,X
sta theXSCREEN
LDX #$00
STX fgCOLLISION
@ -4890,7 +4898,7 @@ drawSPRXYCOLLISION
and #$ff
asl
tax
lda tblSPRITES,x
patchSPR3 lda tblSPRITES,x
sta ptrSPR
lda #sprHEIGHT
@ -5058,6 +5066,7 @@ L85B6 CMP #chrDOT
BEQ L85C6
CMP #chrSPC
BEQ L85C6
and #%1101_1111 ; for lowercase
CMP #chrA
BCC L85E1
CMP #chrZ+1
@ -5201,7 +5210,10 @@ doWAIT1 LDY #$B4
BNE doWAIT1
RTS
* index 000102030405060708090A0B0C0D0E0F
* --------------------------------
L86BE HEX 020406080A0C0E10121416181A1C1E20
hex 222426282a2c2e30323436383a3c3e40
*-----------------------------------
* The CTRL-G of Lode Runner
@ -5480,17 +5492,12 @@ setBOARDLINEPOINTERS
* FROM A Y IN TEXT TO A Y IN HGR
*-------------------------------
getXY
* LDA ytable,Y ; in: board X/Y
* PHA ; out: hgr X/Y
* LDA xtable,X
* TAX
* PLA
* TAY
lda xtable,x
tax
lda ytable,y
tay
getXY LDA ytable,Y ; in: board X/Y
PHA ; out: hgr X/Y
LDA xtable,X
TAX
PLA
TAY
RTS
*getBYBI LDA bytable,X ; in: board X

View File

@ -326,34 +326,6 @@ xtable
dfb ]debut
]debut = ]debut+5
--^
DB $00 ; HGR column index
DB $05 ; 0..5..10..15
DB $0A
DB $0F
DB $14
DB $19
DB $1E
DB $23
DB $28
DB $2D
DB $32
DB $37
DB $3C
DB $41
DB $46
DB $4B
DB $50
DB $55
DB $5A
DB $5F
DB $64
DB $69
DB $6E
DB $73
DB $78
DB $7D
DB $82
DB $87
*--- From a Y in board to a Y in HGR
@ -375,15 +347,6 @@ ytable DB $00 ; HGR line index
DB $A5 ; 165
DB $B5 ; 181 ; ligne de texte
*--- From a X in HGR (0..139) coordinate to a Y column in HGR (0..39)
xbytable
]debut = $0
lup 140
dfb ]debut
]debut = ]debut+1
--^
*--- $1F00 - Score buffer
scorebuf ds 256

View File

@ -23,6 +23,8 @@
* EQUATES
*-----------------------------------
refSPEED = 18
lvlWIDTH = 28 ; $1c
lvlHEIGHT = 16 ; $10
@ -159,42 +161,44 @@ sprDATA = $df ; $df..$ff
Debut = $e0 ; the good old DP variables
Arrivee = Debut+4
chrLA = $88
chrRET = $8d
chrRA = $95
chrESC = $9b
chrSPC = " "
chrZERO = "0"
chrNINE = "9"
chrDOT = "."
chrA = "A"
chrI = "I"
chrJ = "J"
chrK = "K"
chrL = "L"
chrN = "N"
chrO = "O"
chrU = "U"
chrY = "Y"
chrZ = "Z"
chrLA = $88 ; left arrow
chrDA = $8a ; down arrow
chrUA = $8b ; up arrow
chrRET = $8d ;
chrCTRLQ = $91 ; CTRL-Q: quit
chrRA = $95 ; right arrow
chrESC = $9b ;
chrSPC = " " ;
chrZERO = "0" ; 0
chrONE = "1" ; 1
chrTWO = "2" ; 2
chrTHREE = "3" ; 3
chrNINE = "9" ;
chrDOT = "." ;
chrA = "A" ; first character
chrI = "I" ; move up
chrJ = "J" ; move left
chrK = "K" ; move down
chrL = "L" ; move right
chrN = "N" ; NO
chrO = "O" ; dig right
chrP = "P" ;
chrU = "U" ; dig left
chrY = "Y" ; YES
chrZ = "Z" ; last character
*-----------------------------------
* SOFTSWITCHES
*-----------------------------------
KBD = $C000
KBDSTROBE = $C010
SPKR = $C030
TXTCLR = $C050
MIXCLR = $C052
TXTPAGE1 = $C054
TXTPAGE2 = $C055
HIRES = $C057
BUTN0 = $C061
BUTN1 = $C062
PADDL0 = $C064
PADDL1 = $C065
PTRIG = $C070
KBD = $e0c000
KBDSTROBE = $e0c010
SPKR = $e0c030
BUTN0 = $e0c061
BUTN1 = $e0c062
PADDL0 = $e0c064
PADDL1 = $e0c065
PTRIG = $e0c070
*-----------------------------------
* PAGES GRAPHIQUES
@ -202,4 +206,3 @@ PTRIG = $C070
oldHGR1 = $2000
oldHGR2 = $4000
oldHGR3 = $6000

View File

@ -127,214 +127,6 @@ tblSPRITES
da spr64
da spr65
tblSPRITESlow
db <spr00
db <spr01
db <spr02
db <spr03
db <spr04
db <spr05
db <spr06
db <spr07
db <spr08
db <spr09
db <spr0A
db <spr0B
db <spr0C
db <spr0D
db <spr0E
db <spr0F
db <spr10
db <spr11
db <spr12
db <spr13
db <spr14
db <spr15
db <spr16
db <spr17
db <spr18
db <spr19
db <spr1A
db <spr1B
db <spr1C
db <spr1D
db <spr1E
db <spr1F
db <spr20
db <spr21
db <spr22
db <spr23
db <spr24
db <spr25
db <spr26
db <spr27
db <spr28
db <spr29
db <spr2A
db <spr2B
db <spr2C
db <spr2D
db <spr2E
db <spr2F
db <spr30
db <spr31
db <spr32
db <spr33
db <spr34
db <spr35
db <spr36
db <spr37
db <spr38
db <spr39
db <spr3A
db <spr3B
db <spr3C
db <spr3D
db <spr3E
db <spr3F
db <spr40
db <spr41
db <spr42
db <spr43
db <spr44
db <spr45
db <spr46
db <spr47
db <spr48
db <spr49
db <spr4A
db <spr4B
db <spr4C
db <spr4D
db <spr4E
db <spr4F
db <spr50
db <spr51
db <spr52
db <spr53
db <spr54
db <spr55
db <spr56
db <spr57
db <spr58
db <spr59
db <spr5A
db <spr5B
db <spr5C
db <spr5D
db <spr5E
db <spr5F
db <spr60
db <spr61
db <spr62
db <spr63
db <spr64
db <spr65
tblSPRITEShigh
db >spr00
db >spr01
db >spr02
db >spr03
db >spr04
db >spr05
db >spr06
db >spr07
db >spr08
db >spr09
db >spr0A
db >spr0B
db >spr0C
db >spr0D
db >spr0E
db >spr0F
db >spr10
db >spr11
db >spr12
db >spr13
db >spr14
db >spr15
db >spr16
db >spr17
db >spr18
db >spr19
db >spr1A
db >spr1B
db >spr1C
db >spr1D
db >spr1E
db >spr1F
db >spr20
db >spr21
db >spr22
db >spr23
db >spr24
db >spr25
db >spr26
db >spr27
db >spr28
db >spr29
db >spr2A
db >spr2B
db >spr2C
db >spr2D
db >spr2E
db >spr2F
db >spr30
db >spr31
db >spr32
db >spr33
db >spr34
db >spr35
db >spr36
db >spr37
db >spr38
db >spr39
db >spr3A
db >spr3B
db >spr3C
db >spr3D
db >spr3E
db >spr3F
db >spr40
db >spr41
db >spr42
db >spr43
db >spr44
db >spr45
db >spr46
db >spr47
db >spr48
db >spr49
db >spr4A
db >spr4B
db >spr4C
db >spr4D
db >spr4E
db >spr4F
db >spr50
db >spr51
db >spr52
db >spr53
db >spr54
db >spr55
db >spr56
db >spr57
db >spr58
db >spr59
db >spr5A
db >spr5B
db >spr5C
db >spr5D
db >spr5E
db >spr5F
db >spr60
db >spr61
db >spr62
db >spr63
db >spr64
db >spr65
*--- 00..0F
spr00 hex 0000000000 ; empty

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -182,10 +182,22 @@ noSOUND _HideMenuBar
dex
bpl ]lp
lda #0
beq noPATCH
jsr setLRPALETTE ; set the LR palette
lda #tblSPRITES2
sta patchSPR1+1
sta patchSPR2+1
sta patchSPR3+1
noPATCH
jsr loadLEVELS ; exit 8-bit
mx %11
lda #refSPEED ; try to slow it down a bit
sta theSPEED
lda ptrSCREEN+2
sta ptrHGR1+2
brl theGAME
@ -345,7 +357,9 @@ saveLEVELS9 sep #$30
*----------------------------------- Quit
meQUIT PushWord #refIsHandle
meQUIT rep #$30
PushWord #refIsHandle
PushLong SStopREC
_ShutDownTools
@ -522,6 +536,26 @@ loadBACK _HideCursor
_ShowCursor
rts
*----------------------------------------
* SET STANDARD 320 PALETTE
*----------------------------------------
setSTDPALETTE
PushWord #0
PushLong #palette320
_SetColorTable
rts
*----------------------------------------
* SET LODE RUNNER 320 PALETTE
*----------------------------------------
setLRPALETTE
PushWord #0
PushLong #paletteLR
_SetColorTable
rts
*----------------------------------------
* DATA
*----------------------------------------
@ -549,6 +583,14 @@ SStopREC ds 4
ptrSCREEN adrl ptr012000
*----------------------- QuickDraw II
palette320 dw $0000,$0777,$0841,$072C,$000F,$0080,$0F70,$0D00
dw $0FA9,$0FF0,$00E0,$04DF,$0DAF,$078F,$0CCC,$0FFF
paletteLR dw $0445,$0000,$0FFF,$0952,$00BB,$01DD,$0FF0,$0A1A
dw $0C0C,$0FCB,$0A10,$0C30,$0E50,$0666,$0AAA,$0FFF
*----------------------- GS/OS
*--- LEVELS
@ -625,7 +667,8 @@ loadPATH1
put LR.Code.s
put LR.Data.s
put LR.Tables.s
put LR.Sprites.s
put LR.Sprites.s ; 8-bits sprites
put LR.Sprites2.s ; 16-col sprites
*---

1527
loderunner/source/shape.S Normal file

File diff suppressed because it is too large Load Diff