mirror of
https://github.com/antoinevignau/source.git
synced 2024-06-11 03:29:35 +00:00
v+1
This commit is contained in:
parent
3edc17e527
commit
9170c2cbdd
Binary file not shown.
16
loderunner/source/LR.BANK1.s
Normal file
16
loderunner/source/LR.BANK1.s
Normal file
|
@ -0,0 +1,16 @@
|
|||
*
|
||||
* Lode Runner
|
||||
* (c) 1983, Broderbund Software
|
||||
* (s) 2014, Brutal Deluxe Software
|
||||
*
|
||||
|
||||
*-----------------------------------
|
||||
*
|
||||
*-----------------------------------
|
||||
|
||||
ptrUNPACK ent
|
||||
ds 32768
|
||||
|
||||
ptrBACKGND ent
|
||||
ds 32768
|
||||
|
16
loderunner/source/LR.BANK2.s
Normal file
16
loderunner/source/LR.BANK2.s
Normal file
|
@ -0,0 +1,16 @@
|
|||
*
|
||||
* Lode Runner
|
||||
* (c) 1983, Broderbund Software
|
||||
* (s) 2014, Brutal Deluxe Software
|
||||
*
|
||||
|
||||
*-----------------------------------
|
||||
*
|
||||
*-----------------------------------
|
||||
|
||||
ptrIMAGE ent
|
||||
ds 32768
|
||||
|
||||
ptrTITLE ent
|
||||
ds 32768
|
||||
|
12
loderunner/source/LR.BANK3.S
Normal file
12
loderunner/source/LR.BANK3.S
Normal file
|
@ -0,0 +1,12 @@
|
|||
*
|
||||
* Lode Runner
|
||||
* (c) 1983, Broderbund Software
|
||||
* (s) 2014, Brutal Deluxe Software
|
||||
*
|
||||
|
||||
*-----------------------------------
|
||||
*
|
||||
*-----------------------------------
|
||||
|
||||
ptrLEVELS ent
|
||||
ds 65536
|
|
@ -400,36 +400,59 @@ L62F7 INC fgODDEVEN
|
|||
* LOAD/SAVE LEVEL FROM/TO DISK
|
||||
*-----------------------------------
|
||||
|
||||
diskLEVEL STA LB7F4
|
||||
diskLEVEL tax
|
||||
|
||||
LDA fgDEMO ; are we in demo mode?
|
||||
LSR
|
||||
BEQ diskDEMO ; yes
|
||||
|
||||
LDA intLEVEL ; no, use internal level
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
CLC
|
||||
ADC #$03
|
||||
STA LB7EC ; track
|
||||
LDA intLEVEL
|
||||
AND #$0F
|
||||
STA LB7ED ; sector
|
||||
cpx #1
|
||||
beq dlLOAD
|
||||
cpx #2
|
||||
bne dlERR
|
||||
|
||||
LDA #<levelDISK ; buffer
|
||||
STA LB7F0
|
||||
LDA #>levelDISK
|
||||
STA LB7F0+1
|
||||
LDA #$00
|
||||
STA LB7EB
|
||||
jmp saveLEVELS ; save all levels
|
||||
|
||||
diskRWTS LDY #<LB7E8
|
||||
LDA #>LB7E8
|
||||
jsr callRWTS ; LoGo - JSR $0023 - Souvenir from protection
|
||||
BCC L6344
|
||||
JMP showTITLEPAGE
|
||||
L6344 RTS
|
||||
dlLOAD rep #$30 ; load a level
|
||||
pea ^ptrLEVELS
|
||||
lda intLEVEL
|
||||
and #$ff
|
||||
xba
|
||||
pha
|
||||
PushLong #levelDISK
|
||||
PushLong #256
|
||||
_BlockMove
|
||||
sep #$30
|
||||
rts
|
||||
|
||||
dlERR jmp showTITLEPAGE
|
||||
|
||||
* STA LB7F4
|
||||
* LDA intLEVEL ; no, use internal level
|
||||
* LSR
|
||||
* LSR
|
||||
* LSR
|
||||
* LSR
|
||||
* CLC
|
||||
* ADC #$03
|
||||
* STA LB7EC ; track
|
||||
* LDA intLEVEL
|
||||
* AND #$0F
|
||||
* STA LB7ED ; sector
|
||||
*
|
||||
* LDA #<levelDISK ; buffer
|
||||
* STA LB7F0
|
||||
* LDA #>levelDISK
|
||||
* STA LB7F0+1
|
||||
* LDA #$00
|
||||
* STA LB7EB
|
||||
*
|
||||
*diskRWTS LDY #<LB7E8
|
||||
* LDA #>LB7E8
|
||||
* jsr callRWTS ; LoGo - JSR $0023 - Souvenir from protection
|
||||
* BCC L6344
|
||||
* JMP showTITLEPAGE
|
||||
*L6344 RTS
|
||||
|
||||
diskDEMO LDA theLEVEL ; demo mode uses levels in RAM
|
||||
CLC
|
||||
|
@ -444,33 +467,38 @@ L6350 LDA (ptrHGR1),Y
|
|||
RTS
|
||||
|
||||
*-------------------------------
|
||||
* CALL RWTS
|
||||
* READ/WRITE SCORE FILE
|
||||
*-------------------------------
|
||||
|
||||
readSCORE STA LB7F4 ; command
|
||||
LDA #$0C
|
||||
STA LB7EC ; track
|
||||
LDA #$0F
|
||||
STA LB7ED ; sector
|
||||
readSCORE cmp #1 ; load scores file from disk
|
||||
beq rsLOAD
|
||||
cmp #2 ; save scores file to disk
|
||||
bne rsERR
|
||||
|
||||
ldx #0 ; **logo**
|
||||
]lp lda scoreREF,x
|
||||
sta scorebuf,x
|
||||
inx
|
||||
bne ]lp
|
||||
beq L6381
|
||||
jsr saveSCORES
|
||||
bra L6381
|
||||
|
||||
LDA #<scorebuf ; where to load
|
||||
STA LB7F0
|
||||
LDA #>scorebuf
|
||||
STA LB7F0+1
|
||||
LDA #$00
|
||||
STA LB7EB
|
||||
LDY #<LB7E8 ; IOB table
|
||||
LDA #>LB7E8
|
||||
JSR callRWTS
|
||||
BCC L6381
|
||||
JMP showTITLEPAGE
|
||||
rsLOAD jsr loadSCORES
|
||||
bra L6381
|
||||
|
||||
* STA LB7F4 ; command
|
||||
* LDA #$0C
|
||||
* STA LB7EC ; track
|
||||
* LDA #$0F
|
||||
* STA LB7ED ; sector
|
||||
*
|
||||
* LDA #<scorebuf ; where to load
|
||||
* STA LB7F0
|
||||
* LDA #>scorebuf
|
||||
* STA LB7F0+1
|
||||
* LDA #$00
|
||||
* STA LB7EB
|
||||
* LDY #<LB7E8 ; IOB table
|
||||
* LDA #>LB7E8
|
||||
* JSR callRWTS
|
||||
* BCC L6381
|
||||
|
||||
rsERR JMP showTITLEPAGE
|
||||
|
||||
*--- Check disk (not a LR disk, data disk, master disk)
|
||||
|
||||
|
@ -485,18 +513,20 @@ L6387 LDA scorebuf+$F4,Y ; magic key
|
|||
BPL L6387
|
||||
LDA theMASK1
|
||||
BEQ L639B
|
||||
LDA #$00 ; 0 means not a LR disk
|
||||
LDA #$00 ; 00 means not a LR disk
|
||||
RTS
|
||||
|
||||
L639B LDA #$01 ; master disk
|
||||
L639B LDA #$01 ; 01 master disk
|
||||
LDX scorebuf+$FF
|
||||
BNE L63A4
|
||||
LDA #$FF ; FF means master disk
|
||||
LDA #$FF ; FF means data disk
|
||||
L63A4 RTS
|
||||
|
||||
callRWTS clc
|
||||
rts
|
||||
JMP $bd00 ; LoGo - ($0036) to be replaced with JMP $BD00
|
||||
*-----------------------------------
|
||||
|
||||
*callRWTS JMP $bd00 ; LoGo - ($0036) to be replaced with JMP $BD00
|
||||
|
||||
LB7F4 ds 1 ; The RWTS command
|
||||
|
||||
L63A8 ASC "LODE RUNNER"
|
||||
|
||||
|
@ -3990,9 +4020,7 @@ L7CD5 JMP editNEXT
|
|||
* M - MOVE LEVEL
|
||||
*-------------------------------
|
||||
|
||||
editMOVE jmp editLOOP ; **logo**
|
||||
|
||||
JSR printSTRING
|
||||
editMOVE JSR printSTRING
|
||||
ASC 8D
|
||||
ASC ">>MOVE LEVEL"00
|
||||
JSR inputLEVEL
|
||||
|
@ -4003,108 +4031,137 @@ editMOVE jmp editLOOP ; **logo**
|
|||
JSR inputLEVEL
|
||||
BCS L7D5A
|
||||
STY L8250
|
||||
JSR printSTRING
|
||||
ASC 8D
|
||||
ASC " SOURCE DISKETTE"00
|
||||
JSR editWAITKEY
|
||||
JSR checkDISK
|
||||
LDA L824F
|
||||
STA intLEVEL
|
||||
LDA #$01 ; read
|
||||
JSR diskLEVEL
|
||||
JSR printSTRING
|
||||
ASC 8D
|
||||
ASC " DESTINATION DISKETTE"00
|
||||
JSR editWAITKEY
|
||||
JSR checkDISK
|
||||
LDA L8250
|
||||
STA intLEVEL
|
||||
LDA #$02 ; write
|
||||
JSR diskLEVEL
|
||||
|
||||
* JSR printSTRING
|
||||
* ASC 8D
|
||||
* ASC " SOURCE DISKETTE"00
|
||||
* JSR editWAITKEY
|
||||
* JSR checkDISK
|
||||
* LDA L824F
|
||||
* STA intLEVEL
|
||||
* LDA #$01 ; read
|
||||
* JSR diskLEVEL
|
||||
* JSR printSTRING
|
||||
* ASC 8D
|
||||
* ASC " DESTINATION DISKETTE"00
|
||||
* JSR editWAITKEY
|
||||
* JSR checkDISK
|
||||
* LDA L8250
|
||||
* STA intLEVEL
|
||||
* LDA #$02 ; write
|
||||
* JSR diskLEVEL
|
||||
|
||||
jsr iigsMOVELEVEL
|
||||
|
||||
JMP editLOOP
|
||||
L7D5A JMP editNEXT
|
||||
|
||||
*-------------------------------
|
||||
* I - INITIALIZE DISKETTE
|
||||
|
||||
mx %00
|
||||
|
||||
iigsMOVELEVEL
|
||||
rep #$30
|
||||
|
||||
pea ^ptrLEVELS ; set source level
|
||||
lda L824F
|
||||
and #$ff
|
||||
xba
|
||||
pha
|
||||
|
||||
pea ^ptrLEVELS ; set destination level
|
||||
lda L8250
|
||||
and #$ff
|
||||
xba
|
||||
pha
|
||||
|
||||
PushLong #256 ; set length
|
||||
_BlockMove
|
||||
|
||||
jmp saveLEVELS ; save levels and return 8-bit
|
||||
|
||||
mx %11
|
||||
|
||||
*-------------------------------
|
||||
* I - INITIALIZE DISKETTE => CLEAR LEVELS
|
||||
*-------------------------------
|
||||
|
||||
editINIT jmp editLOOP ; **logo**
|
||||
|
||||
JSR printSTRING
|
||||
ASC 8D
|
||||
ASC ">>INITIALIZE"8D
|
||||
ASC " THIS FORMATS THE DISKETTE"8D
|
||||
ASC " FOR USER CREATED LEVELS."8D
|
||||
ASC " (CAUTION. IT ERASES THE"8D
|
||||
ASC " ENTIRE DISKETTE FIRST)"8D8D
|
||||
ASC " ARE YOU SURE (Y/N) "00
|
||||
JSR editWAITKEY
|
||||
CMP #chrY
|
||||
BNE L7E72
|
||||
NOP ; NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
LDA intLEVEL
|
||||
PHA
|
||||
LDA #$04 ; Init command
|
||||
JSR diskLEVEL
|
||||
|
||||
LDA #<boot ; Save T0/S0
|
||||
STA LB7F0
|
||||
LDA #>boot
|
||||
STA LB7F0+1
|
||||
LDA #$00
|
||||
STA LB7ED
|
||||
STA LB7EC
|
||||
LDA #$02
|
||||
STA LB7F4
|
||||
JSR diskRWTS
|
||||
LDA #$E0
|
||||
STA intLEVEL
|
||||
LDA #$01
|
||||
JSR diskLEVEL
|
||||
LDY #$37
|
||||
L7E33 LDA L8251,Y
|
||||
STA levelDISK,Y
|
||||
DEY
|
||||
BPL L7E33
|
||||
LDA #$02
|
||||
JSR diskLEVEL
|
||||
LDA #$EF
|
||||
STA intLEVEL
|
||||
LDA #$01
|
||||
JSR diskLEVEL
|
||||
LDY #$20
|
||||
L7E4C LDA L8289,Y
|
||||
STA levelDISK+$B,Y
|
||||
DEY
|
||||
BPL L7E4C
|
||||
LDA #$02
|
||||
JSR diskLEVEL
|
||||
LDA #$01
|
||||
JSR readSCORE
|
||||
LDY #$0A
|
||||
L7E61 LDA L63A8,Y
|
||||
STA scorebuf+$F4,Y
|
||||
DEY
|
||||
BPL L7E61
|
||||
LDA #$02
|
||||
JSR readSCORE
|
||||
PLA
|
||||
STA intLEVEL
|
||||
L7E72 JMP editLOOP
|
||||
editINIT jmp editLOOP
|
||||
* JSR printSTRING
|
||||
* ASC 8D
|
||||
* ASC ">>INITIALIZE"8D
|
||||
* ASC " THIS FORMATS THE DISKETTE"8D
|
||||
* ASC " FOR USER CREATED LEVELS."8D
|
||||
* ASC " (CAUTION. IT ERASES THE"8D
|
||||
* ASC " ENTIRE DISKETTE FIRST)"8D8D
|
||||
* ASC " ARE YOU SURE (Y/N) "00
|
||||
* JSR editWAITKEY
|
||||
* CMP #chrY
|
||||
* BNE L7E72
|
||||
* NOP ; NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* NOP
|
||||
* LDA intLEVEL
|
||||
* PHA
|
||||
* LDA #$04 ; Init command
|
||||
* JSR diskLEVEL
|
||||
*
|
||||
* LDA #<boot ; Save T0/S0
|
||||
* STA LB7F0
|
||||
* LDA #>boot
|
||||
* STA LB7F0+1
|
||||
* LDA #$00
|
||||
* STA LB7ED
|
||||
* STA LB7EC
|
||||
* LDA #$02
|
||||
* STA LB7F4
|
||||
* JSR diskRWTS
|
||||
* LDA #$E0
|
||||
* STA intLEVEL
|
||||
* LDA #$01
|
||||
* JSR diskLEVEL
|
||||
* LDY #$37
|
||||
*L7E33 LDA L8251,Y
|
||||
* STA levelDISK,Y
|
||||
* DEY
|
||||
* BPL L7E33
|
||||
* LDA #$02
|
||||
* JSR diskLEVEL
|
||||
* LDA #$EF
|
||||
* STA intLEVEL
|
||||
* LDA #$01
|
||||
* JSR diskLEVEL
|
||||
* LDY #$20
|
||||
*L7E4C LDA L8289,Y
|
||||
* STA levelDISK+$B,Y
|
||||
* DEY
|
||||
* BPL L7E4C
|
||||
* LDA #$02
|
||||
* JSR diskLEVEL
|
||||
* LDA #$01
|
||||
* JSR readSCORE
|
||||
* LDY #$0A
|
||||
*L7E61 LDA L63A8,Y
|
||||
* STA scorebuf+$F4,Y
|
||||
* DEY
|
||||
* BPL L7E61
|
||||
* LDA #$02
|
||||
* JSR readSCORE
|
||||
* PLA
|
||||
* STA intLEVEL
|
||||
*L7E72 JMP editLOOP
|
||||
|
||||
*-------------------------------
|
||||
* C - CLEAR SCORE FILE
|
||||
|
@ -4551,8 +4608,8 @@ L824C RTS
|
|||
L824D RTS
|
||||
|
||||
L824E DB $85
|
||||
L824F DB $0F
|
||||
L8250 DB $60
|
||||
L824F DB $0F ; level from
|
||||
L8250 DB $60 ; level to
|
||||
|
||||
L8251 HEX 02110F040000FE000000000000000000
|
||||
HEX 00000000000000000000000000000000
|
||||
|
@ -5438,16 +5495,16 @@ getXY LDA ytable,Y ; in: board X/Y
|
|||
TAY
|
||||
RTS
|
||||
|
||||
getBYBI LDA bytable,X
|
||||
PHA
|
||||
LDA bitable,X
|
||||
getBYBI LDA bytable,X ; in: board X
|
||||
PHA ; out: A: HGR column (0..39)
|
||||
LDA bitable,X ; X: sprite table (0..6)
|
||||
TAX
|
||||
PLA
|
||||
RTS
|
||||
|
||||
getXBYBI LDA xbytable,X
|
||||
PHA
|
||||
LDA xbitable,X
|
||||
getXBYBI LDA xbytable,X ; in: X: HGR x-coord
|
||||
PHA ; out: A: HGR column (0..39)
|
||||
LDA xbitable,X ; X: sprite table (0..6)
|
||||
TAX
|
||||
PLA
|
||||
RTS
|
||||
|
|
|
@ -729,23 +729,24 @@ xbitable DB $00 ; 0..4: sprite is 2-col wide
|
|||
DB $05
|
||||
|
||||
*--- Boot 1 of data disks (T0/S0)
|
||||
*
|
||||
*boot HEX 012058FC2093FE2089FEA000B93408F0
|
||||
* HEX 0E20F0FDC98DD004A9098524C8D0EDA6
|
||||
* HEX 2B9D88C08A4A4A4A4A09C08D3308200C
|
||||
* HEX FD4C00C68D8D8D8D8D8D8DCCCFC4C5A0
|
||||
* HEX D2D5CECEC5D2A0C4C1D4C1A0C4C9D3CB
|
||||
* HEX BA8DADADADADADADADADADADADADADAD
|
||||
* HEX ADADADADADADADAD8D8DC4C9D3CBC5D4
|
||||
* HEX D4C5A0D7C9CCCCA0CECFD4A0C2CFCFD4
|
||||
* HEX 8D8DA0C9CED3C5D2D4A0CEC5D7A0C4C9
|
||||
* HEX D3CBA0C1CEC48DA0C8C9D4A0C1A0CBC5
|
||||
* HEX D9A0D4CFA0D2C5C2CFCFD48D8DA0A0A0
|
||||
* HEX A0A0A0A0A0A0A0000000000000000000
|
||||
* HEX 00000000000000000000000000000000
|
||||
* HEX 00000000000000000000000000000000
|
||||
* HEX 00000000000000000000000000000000
|
||||
* HEX 00000000000000000000000000000000
|
||||
|
||||
boot HEX 012058FC2093FE2089FEA000B93408F0
|
||||
HEX 0E20F0FDC98DD004A9098524C8D0EDA6
|
||||
HEX 2B9D88C08A4A4A4A4A09C08D3308200C
|
||||
HEX FD4C00C68D8D8D8D8D8D8DCCCFC4C5A0
|
||||
HEX D2D5CECEC5D2A0C4C1D4C1A0C4C9D3CB
|
||||
HEX BA8DADADADADADADADADADADADADADAD
|
||||
HEX ADADADADADADADAD8D8DC4C9D3CBC5D4
|
||||
HEX D4C5A0D7C9CCCCA0CECFD4A0C2CFCFD4
|
||||
HEX 8D8DA0C9CED3C5D2D4A0CEC5D7A0C4C9
|
||||
HEX D3CBA0C1CEC48DA0C8C9D4A0C1A0CBC5
|
||||
HEX D9A0D4CFA0D2C5C2CFCFD48D8DA0A0A0
|
||||
HEX A0A0A0A0A0A0A0000000000000000000
|
||||
HEX 00000000000000000000000000000000
|
||||
HEX 00000000000000000000000000000000
|
||||
HEX 00000000000000000000000000000000
|
||||
HEX 00000000000000000000000000000000
|
||||
ds \
|
||||
|
||||
*--- $1F00 - Score buffer
|
||||
|
@ -785,4 +786,37 @@ scoreREF hex CED5C71C00173125
|
|||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 00000000CCCFC4C5A0D2D5CECEC5D2
|
||||
hex FF ; <= the tag
|
||||
hex 00 ; <= data disk
|
||||
|
||||
scoreEMPTY hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 0000000000000000
|
||||
hex 00000000CCCFC4C5A0D2D5CECEC5D2
|
||||
hex 00 ; <= data disk
|
|
@ -149,6 +149,9 @@ fgKEYBTN0 = $ac ; 1: no key/btn0 pressed, 0: key/btn0 pressed
|
|||
fgCHANGE = $ad ; 1: no change, 0: change
|
||||
sprDATA = $df ; $df..$ff
|
||||
|
||||
Debut = $e0 ; the good old DP variables
|
||||
Arrivee = Debut+4
|
||||
|
||||
chrLA = $88
|
||||
chrRET = $8d
|
||||
chrRA = $95
|
||||
|
|
Binary file not shown.
BIN
loderunner/source/LodeRunner_ResourceFork.bin
Normal file
BIN
loderunner/source/LodeRunner_ResourceFork.bin
Normal file
Binary file not shown.
15415
loderunner/source/LodeRunner_S01__Output.txt
Normal file
15415
loderunner/source/LodeRunner_S01__Output.txt
Normal file
File diff suppressed because it is too large
Load Diff
16402
loderunner/source/LodeRunner_S02__Output.txt
Normal file
16402
loderunner/source/LodeRunner_S02__Output.txt
Normal file
File diff suppressed because it is too large
Load Diff
16402
loderunner/source/LodeRunner_S03__Output.txt
Normal file
16402
loderunner/source/LodeRunner_S03__Output.txt
Normal file
File diff suppressed because it is too large
Load Diff
16399
loderunner/source/LodeRunner_S04__Output.txt
Normal file
16399
loderunner/source/LodeRunner_S04__Output.txt
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +1 @@
|
|||
LR.CODE=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
LodeRunner=Type(B3),AuxType(DB00),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
*
|
||||
* La Belle Zohra
|
||||
*
|
||||
* (c) 1992, François Coulon
|
||||
* (c) 2023, Antoine Vignau & Olivier Zardini
|
||||
* Lode Runner
|
||||
* (c) 1983, Broderbund Software
|
||||
* (s) 2014, Brutal Deluxe Software
|
||||
*
|
||||
|
||||
mx %00
|
||||
|
@ -35,8 +34,15 @@
|
|||
|
||||
*----------------------------------- Constantes
|
||||
|
||||
ext ptrUNPACK
|
||||
ext ptrBACKGND
|
||||
ext ptrIMAGE
|
||||
ext ptrTITLE
|
||||
ext ptrLEVELS
|
||||
|
||||
*-------------- Softswitches
|
||||
|
||||
RDVBLBAR = $e0c019
|
||||
GSOS = $e100a8
|
||||
|
||||
*-------------- GUI
|
||||
|
@ -49,13 +55,15 @@ refIsPointer = 0
|
|||
refIsHandle = 1
|
||||
refIsResource = 2
|
||||
|
||||
appleKey = $0100
|
||||
mouseDownEvt = $0001
|
||||
mouseUpEvt = $0002
|
||||
keyDownEvt = $0003
|
||||
|
||||
ptr012000 = $012000
|
||||
ptrE12000 = $e12000
|
||||
ptrSCREENE1 = $e02000
|
||||
|
||||
*---
|
||||
|
||||
TRUE = 255
|
||||
FALSE = 0
|
||||
|
||||
*----------------------------------- Entry point
|
||||
|
||||
phk
|
||||
|
@ -76,6 +84,95 @@ ptrSCREENE1 = $e02000
|
|||
tdc
|
||||
sta myDP
|
||||
|
||||
*--- Version du systeme
|
||||
|
||||
jsl GSOS
|
||||
dw $202a
|
||||
adrl proVERS
|
||||
|
||||
lda proVERS+2
|
||||
and #%01111111_11111111
|
||||
cmp #$0402
|
||||
bcs okVERS
|
||||
|
||||
pha
|
||||
PushLong #verSTR1
|
||||
PushLong #verSTR2
|
||||
PushLong #errSTR1
|
||||
PushLong #errSTR2
|
||||
_TLTextMountVolume
|
||||
pla
|
||||
brl meQUIT1
|
||||
|
||||
*--- Compacte la mémoire
|
||||
|
||||
okVERS PushLong #0
|
||||
PushLong #$8fffff
|
||||
PushWord myID
|
||||
PushWord #%11000000_00000000
|
||||
PushLong #0
|
||||
_NewHandle
|
||||
_DisposeHandle
|
||||
_CompactMem
|
||||
|
||||
*--- Chargement des outils
|
||||
|
||||
pha
|
||||
pha
|
||||
PushWord mainID
|
||||
PushWord #refIsResource
|
||||
PushLong #1
|
||||
_StartUpTools
|
||||
PullLong SStopREC
|
||||
bcc okTOOL
|
||||
|
||||
pha
|
||||
PushLong #tolSTR1
|
||||
PushLong #errSTR2
|
||||
PushLong #errSTR1
|
||||
PushLong #errSTR2
|
||||
_TLTextMountVolume
|
||||
pla
|
||||
brl meQUIT1
|
||||
|
||||
*--- Test default shadowing...
|
||||
|
||||
okTOOL PushWord #0
|
||||
_GetMasterSCB
|
||||
pla
|
||||
bmi okSHADOW ; shadowing is on if bit 15 is set
|
||||
|
||||
lda #^ptrE12000 ; shadowing is off, use slow RAM
|
||||
sta ptrSCREEN+2
|
||||
|
||||
*--- Et la musique...
|
||||
|
||||
okSHADOW pha
|
||||
_SoundToolStatus
|
||||
pla
|
||||
bne noSOUND
|
||||
|
||||
lda #1
|
||||
sta fgSND
|
||||
|
||||
noSOUND _HideMenuBar
|
||||
_InitCursor
|
||||
_HideCursor
|
||||
|
||||
PushWord #0
|
||||
PushWord #%11111111_11111111
|
||||
PushWord #0
|
||||
_FlushEvents
|
||||
pla
|
||||
|
||||
PushLong #0
|
||||
PushWord #5 ; SetDeskPat
|
||||
PushWord #$4000
|
||||
PushWord #$0000
|
||||
_Desktop
|
||||
pla
|
||||
pla
|
||||
|
||||
*----------------------------------- Exit point
|
||||
|
||||
lda #theGAME
|
||||
|
@ -83,20 +180,247 @@ ptrSCREENE1 = $e02000
|
|||
lda #^theGAME
|
||||
stal $302
|
||||
|
||||
sep #$30
|
||||
ldx #256-2 ; efface la page directe
|
||||
]lp stz $00,x
|
||||
dex
|
||||
dex
|
||||
bpl ]lp
|
||||
|
||||
lda #^ptrSCREENE1
|
||||
sep #$30 ; MAJ le banc des pages
|
||||
lda ptrSCREEN+2
|
||||
sta ptrDATA+2
|
||||
sta ptrHGR1+2
|
||||
sta ptrHGR2+2
|
||||
|
||||
brl theGAME
|
||||
|
||||
*----------------------------------- Exit point
|
||||
*-----------------------------------
|
||||
* AUTRES ROUTINES
|
||||
*-----------------------------------
|
||||
|
||||
rep #$30
|
||||
*----------------------------------- Open LEVELS
|
||||
|
||||
PushWord myID
|
||||
doLOAD jsr saveBACK
|
||||
|
||||
PushWord #30
|
||||
PushWord #43
|
||||
PushLong #strLOADFILE
|
||||
PushLong #0
|
||||
PushLong #typeLIST
|
||||
PushLong #replyPTR
|
||||
_SFGetFile
|
||||
|
||||
jsr loadBACK
|
||||
|
||||
lda replyPTR
|
||||
bne doLOAD1
|
||||
rts
|
||||
|
||||
doLOAD1 jsr copyPATH
|
||||
jsr loadLEVELS
|
||||
jmp loadSCORES
|
||||
|
||||
*----------------------------------- Save
|
||||
|
||||
doSAVE jsr saveBACK
|
||||
|
||||
PushWord #25
|
||||
PushWord #36
|
||||
PushLong #strSAVEFILE
|
||||
PushLong #namePATH
|
||||
PushWord #15
|
||||
PushLong #replyPTR
|
||||
_SFPutFile
|
||||
|
||||
jsr loadBACK
|
||||
|
||||
lda replyPTR
|
||||
bne doSAVE1
|
||||
rts
|
||||
|
||||
doSAVE1 jsr copyPATH
|
||||
jsr saveLEVELS
|
||||
jmp saveSCORES
|
||||
|
||||
*--- Recopie le filename du fichier de sauvegarde
|
||||
|
||||
copyPATH sep #$20
|
||||
ldx #16-1
|
||||
]lp lda namePATH1,x
|
||||
sta pLEVELS+4,x
|
||||
sta pSCORES+4,x
|
||||
dex
|
||||
bpl ]lp
|
||||
|
||||
lda namePATH
|
||||
inc ; add 2 chars
|
||||
inc ; for '1/'
|
||||
sta pLEVELS
|
||||
rep #$20
|
||||
rts
|
||||
|
||||
*----------------------------------- Load/Save LEVELS/SCORES
|
||||
|
||||
mx %00
|
||||
|
||||
*---------------------- Load LEVELS
|
||||
|
||||
loadLEVELS rep #$30
|
||||
|
||||
jsl GSOS
|
||||
dw $2010
|
||||
adrl proOPEN
|
||||
bcs loadLEVELS9
|
||||
|
||||
lda proOPEN+2
|
||||
sta proREAD+2
|
||||
sta proCLOSE+2
|
||||
|
||||
jsl GSOS
|
||||
dw $2012
|
||||
adrl proREAD
|
||||
php
|
||||
|
||||
jsl GSOS
|
||||
dw $2014
|
||||
adrl proCLOSE
|
||||
|
||||
plp
|
||||
bcs loadLEVELS9
|
||||
sep #$30
|
||||
rts
|
||||
|
||||
mx %00
|
||||
|
||||
loadLEVELS9 ldx #0 ; clear all levels
|
||||
txa
|
||||
]lp stal ptrLEVELS,x
|
||||
inx
|
||||
inx
|
||||
cpx #38400
|
||||
bcc ]lp
|
||||
sep #$30
|
||||
rts
|
||||
|
||||
mx %00
|
||||
|
||||
*---------------------- Save LEVELS
|
||||
|
||||
saveLEVELS rep #$30
|
||||
|
||||
jsl GSOS
|
||||
dw $2002
|
||||
adrl proDESTROY
|
||||
|
||||
jsl GSOS
|
||||
dw $2001
|
||||
adrl proCREATE
|
||||
bcs saveLEVELS9
|
||||
|
||||
jsl GSOS
|
||||
dw $2010
|
||||
adrl proOPEN
|
||||
bcs saveLEVELS9
|
||||
|
||||
lda proOPEN+2
|
||||
sta proWRITE+2
|
||||
sta proCLOSE+2
|
||||
|
||||
jsl GSOS
|
||||
dw $2013
|
||||
adrl proWRITE
|
||||
|
||||
jsl GSOS
|
||||
dw $2014
|
||||
adrl proCLOSE
|
||||
|
||||
saveLEVELS9 sep #$30
|
||||
rts
|
||||
|
||||
mx %00
|
||||
|
||||
*---------------------- Load SCORES
|
||||
|
||||
loadSCORES rep #$30
|
||||
|
||||
jsl GSOS
|
||||
dw $2010
|
||||
adrl proOPENSCORES
|
||||
bcs loadSCORES9
|
||||
|
||||
lda proOPENSCORES+2
|
||||
sta proREADSCORES+2
|
||||
sta proCLOSE+2
|
||||
|
||||
jsl GSOS
|
||||
dw $2012
|
||||
adrl proREADSCORES
|
||||
php
|
||||
|
||||
jsl GSOS
|
||||
dw $2014
|
||||
adrl proCLOSE
|
||||
|
||||
plp
|
||||
bcs loadSCORES9
|
||||
sep #$30
|
||||
rts
|
||||
|
||||
mx %00
|
||||
|
||||
loadSCORES9 ldx #256-2
|
||||
]lp lda scoreEMPTY,x
|
||||
sta scorebuf,x
|
||||
dex
|
||||
dex
|
||||
bpl ]lp
|
||||
sep #$30
|
||||
rts
|
||||
|
||||
mx %00
|
||||
|
||||
*---------------------- Save SCORES
|
||||
|
||||
saveSCORES rep #$30
|
||||
|
||||
jsl GSOS
|
||||
dw $2002
|
||||
adrl proDESTROYSCORES
|
||||
|
||||
jsl GSOS
|
||||
dw $2001
|
||||
adrl proCREATESCORES
|
||||
bcs saveSCORES9
|
||||
|
||||
jsl GSOS
|
||||
dw $2010
|
||||
adrl proOPENSCORES
|
||||
bcs saveSCORES9
|
||||
|
||||
lda proOPENSCORES+2
|
||||
sta proWRITESCORES+2
|
||||
sta proCLOSE+2
|
||||
|
||||
jsl GSOS
|
||||
dw $2013
|
||||
adrl proWRITESCORES
|
||||
|
||||
jsl GSOS
|
||||
dw $2014
|
||||
adrl proCLOSE
|
||||
|
||||
saveSCORES9 sep #$30
|
||||
rts
|
||||
|
||||
mx %00
|
||||
|
||||
*----------------------------------- Quit
|
||||
|
||||
meQUIT PushWord #refIsHandle
|
||||
PushLong SStopREC
|
||||
_ShutDownTools
|
||||
|
||||
meQUIT1 PushWord myID
|
||||
_DisposeAll
|
||||
|
||||
PushWord mainID
|
||||
|
@ -111,43 +435,265 @@ ptrSCREENE1 = $e02000
|
|||
dw $2029
|
||||
adrl proQUIT
|
||||
|
||||
brk $bd
|
||||
|
||||
*----------------------------------------
|
||||
* MEMOIRE
|
||||
* GFX
|
||||
*----------------------------------------
|
||||
|
||||
make64KB pha
|
||||
pha
|
||||
PushLong #$010000
|
||||
PushWord myID
|
||||
PushWord #%11000000_00011100
|
||||
PushLong #0
|
||||
_NewHandle
|
||||
phd
|
||||
tsc
|
||||
tcd
|
||||
lda [3]
|
||||
tax ; low in X
|
||||
ldy #2
|
||||
lda [3],y
|
||||
txy ; low in Y
|
||||
tax ; high in X
|
||||
pld
|
||||
pla ; we do not keep track of the handle
|
||||
pla
|
||||
*----------------------------
|
||||
* unpackLZ4
|
||||
* Unpacks a LZ4 file
|
||||
* Uses the two pointers:
|
||||
* - ptrUNPACK: packed img (MUST BE AT $0000)
|
||||
* - ptrIMAGE: temp unpack zone
|
||||
*
|
||||
* Entry:
|
||||
* A: packed data size
|
||||
*
|
||||
* Exit:
|
||||
* lenDATA: unpacked data size
|
||||
*
|
||||
*----------------------------
|
||||
|
||||
mx %00
|
||||
|
||||
unpackLZ4 sta LZ4_Limit+1
|
||||
sep #$20
|
||||
|
||||
lda ptrUNPACK+2 ; Source
|
||||
sta LZ4_Literal_3+2
|
||||
sta LZ4_ReadToken+3
|
||||
sta LZ4_Match_1+3
|
||||
sta LZ4_GetLength_1+3
|
||||
|
||||
lda ptrIMAGE+2 ; Destination
|
||||
sta LZ4_Literal_3+1
|
||||
sta LZ4_Match_5+1
|
||||
sta LZ4_Match_5+2
|
||||
|
||||
rep #$20
|
||||
|
||||
*--
|
||||
|
||||
ldy #0 ; Init Target unpacked Data offset
|
||||
ldx #16 ; Offset after header
|
||||
|
||||
LZ4_ReadToken
|
||||
LDAL $AA0000,X ; Read Token Byte
|
||||
INX
|
||||
STA LZ4_Match_2+1
|
||||
|
||||
*----------------
|
||||
|
||||
LZ4_Literal
|
||||
AND #$00F0 ; >>> Process Literal Bytes <<<
|
||||
BEQ LZ4_Limit ; No Literal
|
||||
CMP #$00F0
|
||||
BNE LZ4_Literal_1
|
||||
JSR LZ4_GetLengthLit ; Compute Literal Length with next bytes
|
||||
BRA LZ4_Literal_2
|
||||
LZ4_Literal_1
|
||||
LSR ; Literal Length use the 4 bit
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
|
||||
LZ4_Literal_2
|
||||
DEC ; Copy A+1 Bytes
|
||||
LZ4_Literal_3
|
||||
MVN $AA,$BB ; Copy Literal Bytes from packed data buffer
|
||||
PHK ; X and Y are auto incremented
|
||||
PLB
|
||||
|
||||
*----------------
|
||||
|
||||
LZ4_Limit CPX #$AAAA ; End Of Packed Data buffer ?
|
||||
BEQ LZ4_End
|
||||
|
||||
*----------------
|
||||
|
||||
LZ4_Match TYA ; >>> Process Match Bytes <<<
|
||||
SEC
|
||||
LZ4_Match_1 SBCL $AA0000,X ; Match Offset
|
||||
INX
|
||||
INX
|
||||
STA LZ4_Match_4+1
|
||||
|
||||
LZ4_Match_2 LDA #$0000 ; Current Token Value
|
||||
AND #$000F
|
||||
CMP #$000F
|
||||
BNE LZ4_Match_3
|
||||
JSR LZ4_GetLengthMat ; Compute Match Length with next bytes
|
||||
LZ4_Match_3 CLC
|
||||
ADC #$0003 ; Minimum Match Length is 4 (-1 for the MVN)
|
||||
PHX
|
||||
LZ4_Match_4 LDX #$AAAA ; Match Byte Offset
|
||||
LZ4_Match_5 MVN $BB,$BB ; Copy Match Bytes from unpacked data buffer
|
||||
PHK ; X and Y are auto incremented
|
||||
PLB
|
||||
PLX
|
||||
BRA LZ4_ReadToken
|
||||
|
||||
*----------------
|
||||
|
||||
LZ4_GetLengthLit
|
||||
LDA #$000F ; Compute Variable Length (Literal or Match)
|
||||
LZ4_GetLengthMat
|
||||
STA LZ4_GetLength_2+1
|
||||
LZ4_GetLength_1
|
||||
LDAL $AA0000,X ; Read Length Byte
|
||||
INX
|
||||
AND #$00FF
|
||||
CMP #$00FF
|
||||
BNE LZ4_GetLength_3
|
||||
CLC
|
||||
LZ4_GetLength_2
|
||||
ADC #$000F
|
||||
STA LZ4_GetLength_2+1
|
||||
BRA LZ4_GetLength_1
|
||||
LZ4_GetLength_3
|
||||
ADC LZ4_GetLength_2+1
|
||||
RTS
|
||||
|
||||
*----------------
|
||||
|
||||
LZ4_End sty lenDATA ; Y = length of unpacked data
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
lenDATA ds 4
|
||||
|
||||
*-----------------------------------
|
||||
* SAVE THE SHR SCREEN
|
||||
*-----------------------------------
|
||||
|
||||
saveBACK _HideCursor
|
||||
|
||||
PushLong ptrSCREEN
|
||||
PushLong #ptrBACKGND
|
||||
PushLong #32768
|
||||
_BlockMove
|
||||
|
||||
exitBACK _ShowCursor
|
||||
rts
|
||||
|
||||
*-----------------------------------
|
||||
* RESTORE THE SHR SCREEN
|
||||
*-----------------------------------
|
||||
|
||||
loadBACK _HideCursor
|
||||
|
||||
PushLong #ptrBACKGND
|
||||
PushLong ptrSCREEN
|
||||
PushLong #32768
|
||||
_BlockMove
|
||||
|
||||
_ShowCursor
|
||||
rts
|
||||
|
||||
*----------------------------------------
|
||||
* DATA
|
||||
*----------------------------------------
|
||||
|
||||
fgSND ds 2
|
||||
|
||||
*----------------------- Tool locator
|
||||
|
||||
verSTR1 str 'System 6.0.1 Required!'
|
||||
verSTR2 str 'Press a key to quit'
|
||||
tolSTR1 str 'Error while loading tools'
|
||||
memSTR1 str 'Cannot allocate memory'
|
||||
filSTR1 str 'Cannot load file'
|
||||
errSTR1 str 'Quit'
|
||||
errSTR2 str ''
|
||||
errSTR3 str 'Continue'
|
||||
|
||||
*----------------------- Memory manager
|
||||
|
||||
mainID ds 2 ; app ID
|
||||
myID ds 2 ; user ID
|
||||
myDP ds 2
|
||||
|
||||
SStopREC ds 4
|
||||
|
||||
ptrSCREEN adrl ptr012000
|
||||
|
||||
*----------------------- GS/OS
|
||||
|
||||
*--- LEVELS
|
||||
|
||||
proCREATE dw 7 ; pcount
|
||||
adrl pLEVELS ; pathname
|
||||
dw $c3 ; access_code
|
||||
dw $5d ; file_type
|
||||
adrl $8022 ; aux_type
|
||||
ds 2 ; storage_type
|
||||
adrl 38400 ; eof
|
||||
ds 4 ; resource_eof
|
||||
|
||||
proDESTROY dw 1 ; pcount
|
||||
adrl pLEVELS ; pathname
|
||||
|
||||
proOPEN dw 2
|
||||
ds 2
|
||||
adrl pLEVELS
|
||||
|
||||
proREAD dw 4 ; 0 - nb parms
|
||||
ds 2 ; 2 - file id
|
||||
adrl ptrLEVELS ; 4 - pointer
|
||||
adrl 38400 ; 8 - length
|
||||
ds 4 ; C - length read
|
||||
|
||||
proWRITE dw 5 ; 0 - pcount
|
||||
ds 2 ; 2 - ref_num
|
||||
adrl ptrLEVELS ; 4 - data_buffer
|
||||
adrl 38400 ; 8 - request_count
|
||||
ds 4 ; C - transfer_count
|
||||
dw 1 ; cache_priority
|
||||
|
||||
*--- SCORES
|
||||
|
||||
proCREATESCORES
|
||||
dw 7 ; pcount
|
||||
adrl pSCORES ; pathname
|
||||
dw $c3 ; access_code
|
||||
dw $5d ; file_type
|
||||
adrl $8023 ; aux_type
|
||||
ds 2 ; storage_type
|
||||
adrl 256 ; eof
|
||||
ds 4 ; resource_eof
|
||||
|
||||
proDESTROYSCORES
|
||||
dw 1 ; pcount
|
||||
adrl pLEVELS ; pathname
|
||||
|
||||
proOPENSCORES
|
||||
dw 2
|
||||
ds 2
|
||||
adrl pSCORES
|
||||
|
||||
proREADSCORES
|
||||
dw 4 ; 0 - nb parms
|
||||
ds 2 ; 2 - file id
|
||||
adrl scorebuf ; 4 - pointer
|
||||
adrl 256 ; 8 - length
|
||||
ds 4 ; C - length read
|
||||
|
||||
proWRITESCORES
|
||||
dw 5 ; 0 - pcount
|
||||
ds 2 ; 2 - ref_num
|
||||
adrl scorebuf ; 4 - data_buffer
|
||||
adrl 256 ; 8 - request_count
|
||||
ds 4 ; C - transfer_count
|
||||
dw 1 ; cache_priority
|
||||
|
||||
*--- Global
|
||||
|
||||
proCLOSE dw 1
|
||||
ds 2
|
||||
|
||||
proQUIT dw 2 ; pcount
|
||||
ds 4 ; pathname
|
||||
ds 2 ; flags
|
||||
|
@ -155,14 +701,37 @@ proQUIT dw 2 ; pcount
|
|||
proVERS dw 1 ; pcount
|
||||
ds 2 ; version
|
||||
|
||||
*---------- Files
|
||||
|
||||
pLEVELS strl '1/levels/loderunner'
|
||||
pSCORES strl '1/levels/loderunner.sc'
|
||||
|
||||
*----------------------- Standard File Toolset
|
||||
|
||||
strLOADFILE str 'Load which file?'
|
||||
strSAVEFILE str 'Save as...'
|
||||
|
||||
typeLIST hex 01
|
||||
hex 5d ; Game/Edu files
|
||||
replyPTR ds 2 ; 0 good
|
||||
ds 2 ; 2 fileType
|
||||
ds 2 ; 4 auxFileType
|
||||
namePATH
|
||||
hex 06 ; 6 fileName
|
||||
namePATH1
|
||||
asc 'Levels' ; 7 fileName (16 normally)
|
||||
ds 9
|
||||
loadPATH
|
||||
ds 1 ; 22 fullPathname (string length)
|
||||
loadPATH1
|
||||
ds 129 ; 23 fullPathname (128 normally)
|
||||
|
||||
*----------------------------------------
|
||||
* LES AUTRES FICHIERS
|
||||
*----------------------------------------
|
||||
|
||||
ds \
|
||||
|
||||
put LR.Code.s
|
||||
put LR.RWTS.s
|
||||
* put LR.RWTS.s
|
||||
put LR.Data.s
|
||||
put LR.Tables.s
|
||||
put LR.Sprites.s
|
||||
|
@ -177,7 +746,7 @@ proVERS dw 1 ; pcount
|
|||
asc " Antoine Vignau "0d
|
||||
asc "Olivier Zardini"0d
|
||||
asc " "0d
|
||||
asc " Noel 2023 "0d
|
||||
asc " Paques 2024 "0d
|
||||
asc " "0d
|
||||
asc "----------------"0d
|
||||
|
||||
|
|
|
@ -11,4 +11,16 @@
|
|||
KND $0000
|
||||
SNA DougESmith
|
||||
|
||||
ASM LR.BANK1.S
|
||||
KND $0000
|
||||
SNA Brutal
|
||||
|
||||
ASM LR.BANK2.S
|
||||
KND $0000
|
||||
SNA Deluxe
|
||||
|
||||
ASM LR.BANK3.S
|
||||
KND $0000
|
||||
SNA Software
|
||||
|
||||
* END
|
||||
|
|
Loading…
Reference in New Issue
Block a user