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

View File

@ -326,34 +326,6 @@ xtable
dfb ]debut dfb ]debut
]debut = ]debut+5 ]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 *--- From a Y in board to a Y in HGR
@ -375,15 +347,6 @@ ytable DB $00 ; HGR line index
DB $A5 ; 165 DB $A5 ; 165
DB $B5 ; 181 ; ligne de texte 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 *--- $1F00 - Score buffer
scorebuf ds 256 scorebuf ds 256

View File

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

View File

@ -127,214 +127,6 @@ tblSPRITES
da spr64 da spr64
da spr65 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 *--- 00..0F
spr00 hex 0000000000 ; empty 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 dex
bpl ]lp 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 jsr loadLEVELS ; exit 8-bit
mx %11 mx %11
lda #refSPEED ; try to slow it down a bit
sta theSPEED
lda ptrSCREEN+2 lda ptrSCREEN+2
sta ptrHGR1+2 sta ptrHGR1+2
brl theGAME brl theGAME
@ -345,7 +357,9 @@ saveLEVELS9 sep #$30
*----------------------------------- Quit *----------------------------------- Quit
meQUIT PushWord #refIsHandle meQUIT rep #$30
PushWord #refIsHandle
PushLong SStopREC PushLong SStopREC
_ShutDownTools _ShutDownTools
@ -522,6 +536,26 @@ loadBACK _HideCursor
_ShowCursor _ShowCursor
rts 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 * DATA
*---------------------------------------- *----------------------------------------
@ -549,6 +583,14 @@ SStopREC ds 4
ptrSCREEN adrl ptr012000 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 *----------------------- GS/OS
*--- LEVELS *--- LEVELS
@ -625,7 +667,8 @@ loadPATH1
put LR.Code.s put LR.Code.s
put LR.Data.s put LR.Data.s
put LR.Tables.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