вроде, работает

This commit is contained in:
Tolik 2024-10-20 23:38:12 +10:00
parent e2fe8cb221
commit e0ded79aa7
2 changed files with 363 additions and 175 deletions

View File

@ -8,8 +8,10 @@
;--------------------------------------- ;---------------------------------------
Loader_length EQU 0 Loader_length EQU 0
code_addr EQU #8000 code_addr EQU #8000
program_start EQU code_addr ;program_start EQU code_addr
program_start EQU NEW_CODE_START
stack_point EQU #C000 stack_point EQU #C000
.size EQU 128
;--------------------------------------- ;---------------------------------------
GAME_NEED_MEM_PAGES EQU #C6 GAME_NEED_MEM_PAGES EQU #C6
PAGES_BUFFER EQU #BE00 PAGES_BUFFER EQU #BE00
@ -200,166 +202,156 @@ l81dch:
POP AF ;8203 f1 . POP AF ;8203 f1 .
RET ;8204 c9 . RET ;8204 c9 .
; [ ] FIX 19/10/2024 - ¯à®æ¥¤ãà  ­¥ ¢ë§ë¢ ¥âáï
l8205h: LD A,GAME_NEED_MEM_PAGES ;8205 3e c6 > . l8205h: LD A,GAME_NEED_MEM_PAGES ;8205 3e c6 > .
CALL GET_MEM_AND_PAGES ;8207 cd b7 a1 . . . CALL GET_MEM_AND_PAGES ;8207 cd b7 a1 . . .
CALL GENERATE_PALETTE ;820a cd 26 93 . & . CALL GENERATE_PALETTE ;820a cd 26 93 . & .
DI ;820d f3 . DI ;820d f3 .
; [ ] FIX 19/10/2024 LD A,SYS_PORT.CNF_3 ;820e 3e 1c > .
IN A,(SLOT1) OUT (SYS_PORT.RAM),A ;8210 d3 3c . <
LD (.mem_pg),A LD A,Z84.REG.Misc_Ctrl ;8212 3e 03 > .
; OUT (Z84.SYS.Control),A ;8214 d3 ee . .
LD HL,TITD_ACX.NAME LD A,%0000'0011 ; CS1/CS0 enabled
LD BC,BIOS.FN_CRIPT.AcexAndBitstream OUT (Z84.SYS.Data),A ;8218 d3 ef . .
RST ToBIOS IN A,(SLOT1) ;821a db a2 . .
; LD (.mem_pg),A ;821c 32 30 82 2 0 .
LD HL,TITD_ACX.NAME CALL GET_RESOURCE_TITD.ACX ;821f cd e8 82 . . .
LD BC,5 LD DE,RESET_HANDLER_BEGIN ;8222 11 4f 83 . O .
PUSH BC CALL SETUP_RESET_HANDLER ;8225 cd 1d 83 . . .
XOR A IN A,(FastRAM.ON) ;8228 db fb . .
CPIR CALL INSTALL_TITD.ACX ;822a cd 54 82 . T .
;JP PO,SetUp_RESET_EXIT ; íª®­®¬¨¬ ¯ ¬ïâì IN A,(FastRAM.OFF) ;822d db 7b . {
;
DEC HL
EX DE,HL
LD HL,TITD_ACX.TYPE
POP BC
LDIR
JR NEW_CONF_SETUP
;LD A,SYS_PORT.CNF_3 ;820e 3e 1c > .
;OUT (SYS_PORT.RAM),A ;8210 d3 3c . <
;LD A,Z84.REG.Misc_Ctrl ;8212 3e 03 > .
;OUT (Z84.SYS.Control),A ;8214 d3 ee . .
;LD A,%0000'0011 ; CS1/CS0 enabled
;OUT (Z84.SYS.Data),A ;8218 d3 ef . .
;IN A,(SLOT1) ;821a db a2 . .
;LD (.mem_pg),A ;821c 32 30 82 2 0 .
;CALL GET_RESOURCE_TITD.ACX ;821f cd e8 82 . . .
;LD DE,RESET_HANDLER_BEGIN ;8222 11 4f 83 . O .
;CALL SETUP_RESET_HANDLER ;8225 cd 1d 83 . . .
;IN A,(FastRAM.ON) ;8228 db fb . .
;CALL INSTALL_TITD.ACX ;822a cd 54 82 . T .
;IN A,(FastRAM.OFF) ;822d db 7b . {
BLOCK #822f-$,0
;
.mem_pg+1: LD A,5 ;822f 3e 05 > . .mem_pg+1: LD A,5 ;822f 3e 05 > .
OUT (SLOT1),A ;8231 d3 a2 . . OUT (SLOT1),A ;8231 d3 a2 . .
l8233h: DI ;8233 f3 . ;
IN A,(SLOT1) ;8234 db a2 . . HARD_RESET: DI ;8233 f3 .
PUSH AF ;8236 f5 . LD A,ACEX.Config_PG.Sp2000
LD A,DCP_PAGE ;8237 3e 40 > @ LD BC,BIOS.RST_CONF.CUSTOM
OUT (SLOT1),A ;8239 d3 a2 . . RST ToBIOS
LD A,ACEX.RESET ;823b 3e 2e > . ;
LD (#4400),A ;823d 32 00 44 2 . D CALL PREPARE_TO_EXIT_NEW
LD (#4600),A ;8240 32 00 46 2 . F ;
POP AF ;8243 f1 . .loop_exit: LD BC,Dss.Exit
OUT (SLOT1),A ;8244 d3 a2 . . RST ToDSS
l8246h: LD BC,#0100 ;8246 01 00 01 . . . DI
OUT (C),C ;8249 ed 49 . I JR .loop_exit
LD BC,0 ;824b 01 00 00 . . . ;
OUT (C),C ;824e ed 49 . I BLOCK #8252-$,0
JR l8246h ;8250 18 f4 . . ;IN A,(SLOT1) ;8234 db a2 . .
;PUSH AF ;8236 f5 .
;LD A,DCP_PAGE ;8237 3e 40 > @
;OUT (SLOT1),A ;8239 d3 a2 . .
;LD A,ACEX.RESET ;823b 3e 2e > .
;LD (#4400),A ;823d 32 00 44 2 . D
;LD (#4600),A ;8240 32 00 46 2 . F
;POP AF ;8243 f1 .
;OUT (SLOT1),A ;8244 d3 a2 . .
.loop: ;LD BC,#0100 ;8246 01 00 01 . . .
;OUT (C),C ;8249 ed 49 . I
;LD BC,0 ;824b 01 00 00 . . .
;OUT (C),C ;824e ed 49 . I
;JR .loop ;8250 18 f4 . .
DI ;8252 f3 . DI ;8252 f3 .
HALT ;8253 76 v HALT ;8253 76 v
; ;
NEW_CONF_SETUP: ; NEW_CONF_SETUP:
; HL = TITD_ACX.NAME ; ; HL = TITD_ACX.NAME
LD (OPEN_PAK_FILE.name),HL ; LD (OPEN_PAK_FILE.name),HL
CALL OPEN_PAK_FILE ; patched ; CALL OPEN_PAK_FILE ; patched
; ;
; XOR A
; LD HL,(PAK_FILE_FM.Size_HL)
; LD DE,(PAK_FILE_FM.Size_IX)
; ;
; .loop: EX AF,AF'
; LD A,H
; OR L
; OR D
; OR E
; JR Z,.exit2Loop
; EX AF,AF'
; ;
; PUSH HL
; PUSH DE
; PUSH AF
; ;
; CALL SET_PAGE_SLOT3
; LD A,(PAK_FILE_FM)
; LD HL,#C000
; LD DE,#4000
; LD C,Dss.Read
; RST ToDSS
; JP C,ERROR_EXIT
; ;
; POP AF
; POP DE
; POP HL
; INC A
; CP GAME_NEED_MEM_PAGES
; JP NC,ERROR_EXIT
; ;
; CCF
; LD BC,#4000
; EX DE,HL
; SBC HL,BC
; EX DE,HL
; JR Z,.loop
; LD B,C
; SBC HL,BC
; JR NC,.loop
; .exitLoop: ; ¢ë室, ¥á«¨ à §¬¥à ª®­äë ­¥ ªà â¥­ à §¬¥àã áâà ­¨æë
; EX DE,HL
; .loop2: LD (HL),#FF
; INC HL
; BIT 7,H
; JR NZ,.loop2
; .exit2Loop: ; ¢ë室, ¥á«¨ à §¬¥à ª®­äë ªà â¥­ à §¬¥àã áâà ­¨æë
; LD HL,PAK_FILE_NAME
; LD (OPEN_PAK_FILE.name),HL
; ;
; LD HL,PAGES_BUFFER
; PUSH HL
; LD A,(CURRENT_PAGE.SLOT3)
; INC A
; LD L,A
; LD A,(HL)
; LD C,BIOS.FreeMem
; RST ToBIOS
; ;JP C,SetUp_RESET_EXIT
; ; ¯à¥¤¯®« £ ¥¬, çâ® ­¥â ®è¨¡ª¨ ¨ A=0
; POP HL
; LD A,(HL)
; LD B,A
; LD A,ACEX.Config_PG.Sp2000
; LD C,BIOS.RST_CONF.CUSTOM
; RST ToBIOS
; ;
; DI
; LD A,SYS_PORT.CNF_0
; OUT (SYS_PORT.RAM),A
; ;
; LD A,(PAGES_BUFFER)
; LD C,BIOS.FreeMem
; RST ToBIOS
; ;
; ; restore HOLD port
; LD D,CMOS_CELL.ScreenPosition
; LD C,BIOS.CMOS_RD
; RST ToBIOS
; JR C,.run_game
; ;
; LD B,A
; LD A,ACEX.HOLD
; LD C,BIOS.SET_PORTS
; RST ToBIOS
; .run_game: JP l8423h.cont
; TITD_ACX:
; .TYPE: DZ '.ACX'
; .NAME: BLOCK 9,0
; ;
XOR A
LD HL,(PAK_FILE_FM.Size_HL)
LD DE,(PAK_FILE_FM.Size_IX)
;
.loop: EX AF,AF'
LD A,H
OR L
OR D
OR E
JR Z,.exit2Loop
EX AF,AF'
;
PUSH HL
PUSH DE
PUSH AF
;
CALL SET_PAGE_SLOT3
LD A,(PAK_FILE_FM)
LD HL,#C000
LD DE,#4000
LD C,Dss.Read
RST ToDSS
JP C,ERROR_EXIT
;
POP AF
POP DE
POP HL
INC A
CP GAME_NEED_MEM_PAGES
JP NC,ERROR_EXIT
;
CCF
LD BC,#4000
EX DE,HL
SBC HL,BC
EX DE,HL
JR Z,.loop
LD B,C
SBC HL,BC
JR NC,.loop
.exitLoop: ; ¢ë室, ¥á«¨ à §¬¥à ª®­äë ­¥ ªà â¥­ à §¬¥àã áâà ­¨æë
EX DE,HL
.loop2: LD (HL),#FF
INC HL
BIT 7,H
JR NZ,.loop2
.exit2Loop: ; ¢ë室, ¥á«¨ à §¬¥à ª®­äë ªà â¥­ à §¬¥àã áâà ­¨æë
LD HL,PAK_FILE_NAME
LD (OPEN_PAK_FILE.name),HL
;
LD HL,PAGES_BUFFER
PUSH HL
LD A,(CURRENT_PAGE.SLOT3)
INC A
LD L,A
LD A,(HL)
LD C,BIOS.FreeMem
RST ToBIOS
;JP C,SetUp_RESET_EXIT
; ¯à¥¤¯®« £ ¥¬, çâ® ­¥â ®è¨¡ª¨ ¨ A=0
POP HL
LD A,(HL)
LD B,A
LD A,ACEX.Config_PG.Sp2000
LD C,BIOS.RST_CONF.CUSTOM
RST ToBIOS
;
DI
LD A,SYS_PORT.CNF_0
OUT (SYS_PORT.RAM),A
;
LD A,(PAGES_BUFFER)
LD C,BIOS.FreeMem
RST ToBIOS
;
; restore HOLD port
LD D,CMOS_CELL.ScreenPosition
LD C,BIOS.CMOS_RD
RST ToBIOS
JR C,.run_game
;
LD B,A
LD A,ACEX.HOLD
LD C,BIOS.SET_PORTS
RST ToBIOS
.run_game: JP l8423h.cont
TITD_ACX:
.TYPE: DZ '.ACX'
.NAME: BLOCK 9,0
;
/*
;!TODO
INSTALL_TITD.ACX: INSTALL_TITD.ACX:
DI ;8254 f3 . DI ;8254 f3 .
LD BC,#1FFD ;8255 01 fd 1f . . . LD BC,#1FFD ;8255 01 fd 1f . . .
@ -422,8 +414,7 @@ INSTALL_TITD.ACX:
.IM_FLAG: DB 0 ;82d7 00 . .IM_FLAG: DB 0 ;82d7 00 .
.reload_str: DB ACEX.RELOAD_STRING ;82d8 .reload_str: DB ACEX.RELOAD_STRING ;82d8
.reload_str.size: EQU $-.reload_str .reload_str.size: EQU $-.reload_str
*/ ; BLOCK #82e8-$,0
BLOCK #82e8-$,0
GET_RESOURCE_TITD.ACX: GET_RESOURCE_TITD.ACX:
@ -463,18 +454,20 @@ SETUP_RESET_HANDLER:
LD A,Spec_Page ;8323 3e 41 > A LD A,Spec_Page ;8323 3e 41 > A
OUT (SLOT3),A ;8325 d3 e2 . . OUT (SLOT3),A ;8325 d3 e2 . .
LD (Spec_Page.RET_addr),DE ;8327 ed 53 f4 ff . S . . LD (Spec_Page.RET_addr),DE ;8327 ed 53 f4 ff . S . .
l832bh: ; [ ] FIX zx pages 20/10/2024
LD A,'Z' ;832b 3e 5a > Z CALL SETUP_RESET_HANDLER_NEW
LD (Spec_Page.flag_Z),A ;832d 32 fe ff 2 . . BLOCK #8335-$,0
LD A,'X' ;8330 3e 58 > X ;LD A,'Z' ;832b 3e 5a > Z
LD (Spec_Page.flag_X),A ;8332 32 ff ff 2 . . ;LD (Spec_Page.flag_Z),A ;832d 32 fe ff 2 . .
;LD A,'X' ;8330 3e 58 > X
;LD (Spec_Page.flag_X),A ;8332 32 ff ff 2 . .
;
IN A,(SLOT0) ;8335 db 82 . . IN A,(SLOT0) ;8335 db 82 . .
LD (Spec_Page.page_0),A ;8337 32 f0 ff 2 . . LD (Spec_Page.page_0),A ;8337 32 f0 ff 2 . .
IN A,(SLOT1) ;833a db a2 . . IN A,(SLOT1) ;833a db a2 . .
LD (Spec_Page.page_1),A ;833c 32 f1 ff 2 . . LD (Spec_Page.page_1),A ;833c 32 f1 ff 2 . .
IN A,(SLOT2) ;833f db c2 . . IN A,(SLOT2) ;833f db c2 . .
LD (Spec_Page.page_2),A ;8341 32 f2 ff 2 . . LD (Spec_Page.page_2),A ;8341 32 f2 ff 2 . .
l8344h:
IN A,(SLOT3) ;8344 db e2 . . IN A,(SLOT3) ;8344 db e2 . .
LD (Spec_Page.page_3),A ;8346 32 f3 ff 2 . . LD (Spec_Page.page_3),A ;8346 32 f3 ff 2 . .
LD A,(RESET_HANDLER_BEGIN.mem_pg) ;8349 3a 5d 83 : ] . LD A,(RESET_HANDLER_BEGIN.mem_pg) ;8349 3a 5d 83 : ] .
@ -487,13 +480,13 @@ RESET_HANDLER_BEGIN:
OUT (SYS_PORT.RAM),A ;8355 d3 3c . < OUT (SYS_PORT.RAM),A ;8355 d3 3c . <
LD A,(Spec_Page.page_0) ;8357 3a f0 ff : . . LD A,(Spec_Page.page_0) ;8357 3a f0 ff : . .
OUT (SLOT0),A ;835a d3 82 . . OUT (SLOT0),A ;835a d3 82 . .
.mem_pg+1: LD A,#41 ;835c 3e 41 > A .mem_pg+1: LD A,Spec_Page ;835c 3e 41 > A
OUT (SLOT3),A ;835e d3 e2 . . OUT (SLOT3),A ;835e d3 e2 . .
JP l8415h ;8360 c3 15 84 . . . JP l8415h ;8360 c3 15 84 . . .
SetUp_RESET_EXIT: SetUp_RESET_EXIT:
LD DE,RESET_HANDLER_EXIT ;8363 11 df 83 . . . LD DE,RESET_HANDLER_EXIT ;8363 11 df 83 . . .
CALL SETUP_RESET_HANDLER ;8366 cd 1d 83 . . . CALL SETUP_RESET_HANDLER ;8366 cd 1d 83 . . .
JP l8233h ;8369 c3 33 82 . 3 . JP HARD_RESET ;8369 c3 33 82 . 3 .
CALL FAST_RAM_FN.OFF_DI ;836c cd 7c a2 . | . CALL FAST_RAM_FN.OFF_DI ;836c cd 7c a2 . | .
CALL GENERATE_PALETTE ;836f cd 26 93 . & . CALL GENERATE_PALETTE ;836f cd 26 93 . & .
@ -5214,7 +5207,7 @@ sub_a718h: LD A,(laa88h) ;a718 3a 88 aa : . .
LD HL,(la857h) ;a732 2a 57 a8 * W . LD HL,(la857h) ;a732 2a 57 a8 * W .
LD A,(PAK_FILE_FM) ;a735 3a 80 aa : . . LD A,(PAK_FILE_FM) ;a735 3a 80 aa : . .
LD B,000h ;a738 06 00 . . LD B,000h ;a738 06 00 . .
LD C,015h ;a73a 0e 15 . . LD C,Dss.Move_FP ;a73a 0e 15 . .
RST ToDSS ;a73c d7 . RST ToDSS ;a73c d7 .
LD B,01bh ;a73d 06 1b . . LD B,01bh ;a73d 06 1b . .
LD C,010h ;a73f 0e 10 . . LD C,010h ;a73f 0e 10 . .
@ -5255,7 +5248,7 @@ la784h: CP 002h ;a784 fe 02 . .
LD HL,(la853h) ;a791 2a 53 a8 * S . LD HL,(la853h) ;a791 2a 53 a8 * S .
LD A,(PAK_FILE_FM) ;a794 3a 80 aa : . . LD A,(PAK_FILE_FM) ;a794 3a 80 aa : . .
LD B,000h ;a797 06 00 . . LD B,000h ;a797 06 00 . .
LD C,015h ;a799 0e 15 . . LD C,Dss.Move_FP ;a799 0e 15 . .
RST ToDSS ;a79b d7 . RST ToDSS ;a79b d7 .
LD B,01bh ;a79c 06 1b . . LD B,01bh ;a79c 06 1b . .
LD C,010h ;a79e 0e 10 . . LD C,010h ;a79e 0e 10 . .
@ -5280,7 +5273,7 @@ la7b6h: LD A,(laa88h) ;a7b6 3a 88 aa : . .
LD HL,(la857h) ;a7c6 2a 57 a8 * W . LD HL,(la857h) ;a7c6 2a 57 a8 * W .
LD A,(PAK_FILE_FM) ;a7c9 3a 80 aa : . . LD A,(PAK_FILE_FM) ;a7c9 3a 80 aa : . .
LD B,000h ;a7cc 06 00 . . LD B,000h ;a7cc 06 00 . .
LD C,015h ;a7ce 0e 15 . . LD C,Dss.Move_FP ;a7ce 0e 15 . .
RST ToDSS ;a7d0 d7 . RST ToDSS ;a7d0 d7 .
LD B,01bh ;a7d1 06 1b . . LD B,01bh ;a7d1 06 1b . .
LD C,010h ;a7d3 0e 10 . . LD C,010h ;a7d3 0e 10 . .
@ -5302,7 +5295,7 @@ la7efh: LD HL,(la85dh) ;a7ef 2a 5d a8 * ] .
LD HL,(la85bh) ;a7f8 2a 5b a8 * [ . LD HL,(la85bh) ;a7f8 2a 5b a8 * [ .
LD A,(PAK_FILE_FM) ;a7fb 3a 80 aa : . . LD A,(PAK_FILE_FM) ;a7fb 3a 80 aa : . .
LD B,000h ;a7fe 06 00 . . LD B,000h ;a7fe 06 00 . .
LD C,015h ;a800 0e 15 . . LD C,Dss.Move_FP ;a800 0e 15 . .
RST ToDSS ;a802 d7 . RST ToDSS ;a802 d7 .
LD B,01bh ;a803 06 1b . . LD B,01bh ;a803 06 1b . .
LD C,00fh ;a805 0e 0f . . LD C,00fh ;a805 0e 0f . .
@ -5328,7 +5321,7 @@ sub_a824h: LD A,0c1h ;a824 3e c1 > .
LD IXL,A ;a832 dd 6f . o LD IXL,A ;a832 dd 6f . o
LD HL,(la84fh) ;a834 2a 4f a8 * O . LD HL,(la84fh) ;a834 2a 4f a8 * O .
LD B,000h ;a837 06 00 . . LD B,000h ;a837 06 00 . .
LD C,015h ;a839 0e 15 . . LD C,Dss.Move_FP ;a839 0e 15 . .
LD A,(PAK_FILE_FM) ;a83b 3a 80 aa : . . LD A,(PAK_FILE_FM) ;a83b 3a 80 aa : . .
RST ToDSS ;a83e d7 . RST ToDSS ;a83e d7 .
LD B,06eh ;a83f 06 6e . n LD B,06eh ;a83f 06 6e . n
@ -5382,7 +5375,7 @@ sub_a874h: LD A,(PAK_FILE_FM) ;a874 3a 80 aa : . .
LD HL,00000h ;a877 21 00 00 ! . . LD HL,00000h ;a877 21 00 00 ! . .
LD IX,00000h ;a87a dd 21 00 00 . ! . . LD IX,00000h ;a87a dd 21 00 00 . ! . .
LD B,001h ;a87e 06 01 . . LD B,001h ;a87e 06 01 . .
LD C,015h ;a880 0e 15 . . LD C,Dss.Move_FP ;a880 0e 15 . .
RST ToDSS ;a882 d7 . RST ToDSS ;a882 d7 .
RET ;a883 c9 . RET ;a883 c9 .
sub_a884h: sub_a884h:
@ -5634,7 +5627,7 @@ GET_NEXT_HR_HEADER_BYTE:
JP Z,ERROR_EXIT ;aa2b ca 85 aa . . . JP Z,ERROR_EXIT ;aa2b ca 85 aa . . .
LD (PAK_FILE_FM.Size_HL),HL ;aa2e 22 81 aa " . . LD (PAK_FILE_FM.Size_HL),HL ;aa2e 22 81 aa " . .
LD (PAK_FILE_FM.Size_IX),IX ;aa31 dd 22 83 aa . " . . LD (PAK_FILE_FM.Size_IX),IX ;aa31 dd 22 83 aa . " . .
LD BC,00015h ;aa35 01 15 00 . . . LD BC,Dss.Move_FP.FrStart ;aa35 01 15 00 . . .
LD H,B ;aa38 60 ` LD H,B ;aa38 60 `
LD L,B ;aa39 68 h LD L,B ;aa39 68 h
LD IX,00000h ;aa3a dd 21 00 00 . ! . . LD IX,00000h ;aa3a dd 21 00 00 . ! . .
@ -5694,7 +5687,7 @@ sub_aa8ah:
LD HL,(la86bh) ;aa96 2a 6b a8 * k . LD HL,(la86bh) ;aa96 2a 6b a8 * k .
LD A,(PAK_FILE_FM) ;aa99 3a 80 aa : . . LD A,(PAK_FILE_FM) ;aa99 3a 80 aa : . .
LD B,000h ;aa9c 06 00 . . LD B,000h ;aa9c 06 00 . .
LD C,015h ;aa9e 0e 15 . . LD C,Dss.Move_FP ;aa9e 0e 15 . .
RST ToDSS ;aaa0 d7 . RST ToDSS ;aaa0 d7 .
LD B,06eh ;aaa1 06 6e . n LD B,06eh ;aaa1 06 6e . n
LD C,005h ;aaa3 0e 05 . . LD C,005h ;aaa3 0e 05 . .
@ -5711,7 +5704,7 @@ sub_aaadh:
LD HL,(la86fh) ;aab9 2a 6f a8 * o . LD HL,(la86fh) ;aab9 2a 6f a8 * o .
LD A,(PAK_FILE_FM) ;aabc 3a 80 aa : . . LD A,(PAK_FILE_FM) ;aabc 3a 80 aa : . .
LD B,000h ;aabf 06 00 . . LD B,000h ;aabf 06 00 . .
LD C,015h ;aac1 0e 15 . . LD C,Dss.Move_FP ;aac1 0e 15 . .
RST ToDSS ;aac3 d7 . RST ToDSS ;aac3 d7 .
LD B,06eh ;aac4 06 6e . n LD B,06eh ;aac4 06 6e . n
LD C,005h ;aac6 0e 05 . . LD C,005h ;aac6 0e 05 . .
@ -5728,7 +5721,7 @@ sub_aad0h:
LD HL,(la867h) ;aadc 2a 67 a8 * g . LD HL,(la867h) ;aadc 2a 67 a8 * g .
LD A,(PAK_FILE_FM) ;aadf 3a 80 aa : . . LD A,(PAK_FILE_FM) ;aadf 3a 80 aa : . .
LD B,000h ;aae2 06 00 . . LD B,000h ;aae2 06 00 . .
LD C,015h ;aae4 0e 15 . . LD C,Dss.Move_FP ;aae4 0e 15 . .
RST ToDSS ;aae6 d7 . RST ToDSS ;aae6 d7 .
LD B,06eh ;aae7 06 6e . n LD B,06eh ;aae7 06 6e . n
LD C,005h ;aae9 0e 05 . . LD C,005h ;aae9 0e 05 . .
@ -5745,7 +5738,7 @@ sub_aaf3h:
LD HL,(la85fh) ;aaff 2a 5f a8 * _ . LD HL,(la85fh) ;aaff 2a 5f a8 * _ .
LD A,(PAK_FILE_FM) ;ab02 3a 80 aa : . . LD A,(PAK_FILE_FM) ;ab02 3a 80 aa : . .
LD B,000h ;ab05 06 00 . . LD B,000h ;ab05 06 00 . .
LD C,015h ;ab07 0e 15 . . LD C,Dss.Move_FP ;ab07 0e 15 . .
RST ToDSS ;ab09 d7 . RST ToDSS ;ab09 d7 .
LD B,06eh ;ab0a 06 6e . n LD B,06eh ;ab0a 06 6e . n
LD C,005h ;ab0c 0e 05 . . LD C,005h ;ab0c 0e 05 . .
@ -5768,7 +5761,7 @@ sub_ab25h:
LD HL,(la863h) ;ab31 2a 63 a8 * c . LD HL,(la863h) ;ab31 2a 63 a8 * c .
LD A,(PAK_FILE_FM) ;ab34 3a 80 aa : . . LD A,(PAK_FILE_FM) ;ab34 3a 80 aa : . .
LD B,000h ;ab37 06 00 . . LD B,000h ;ab37 06 00 . .
LD C,015h ;ab39 0e 15 . . LD C,Dss.Move_FP ;ab39 0e 15 . .
RST ToDSS ;ab3b d7 . RST ToDSS ;ab3b d7 .
LD B,06eh ;ab3c 06 6e . n LD B,06eh ;ab3c 06 6e . n
LD C,005h ;ab3e 0e 05 . . LD C,005h ;ab3e 0e 05 . .
@ -6119,6 +6112,201 @@ lad3eh:
RET ;ae1b c9 . RET ;ae1b c9 .
; ;
DZ 'Cash.dat' ;ae1c DZ 'Cash.dat' ;ae1c
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NEW CODE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; [ ] FIX 19/10/2024
NEW_CODE_START: LD C,Dss.GetVMod
RST ToDSS
JR C,.no_vmode
CP #80
JR NC,.no_vmode
; ;
BLOCK #B000-$,0 LD (PREPARE_TO_EXIT_NEW.current_vmode),A
LD A,B
LD (PREPARE_TO_EXIT_NEW.current_screen),A
; ;
LD A,Dss.SetVMod.grf320x256
LD B,Dss.SetVMod
RST ToDSS
.no_vmode: ;
LD A,GAME_NEED_MEM_PAGES ;8205 3e c6 > .
CALL GET_MEM_AND_PAGES ;8207 cd b7 a1 . . .
CALL GENERATE_PALETTE ;820a cd 26 93 . & .
DI ;820d f3 .
IN A,(SLOT1)
LD (l8205h.mem_pg),A
;
LD HL,TITD_ACX.NAME
LD BC,BIOS.FN_CRIPT.AcexAndBitstream
RST ToBIOS
;
LD HL,TITD_ACX.NAME
LD BC,5
PUSH BC
XOR A
CPIR
JP PO,SetUp_RESET_EXIT
;
DEC HL
EX DE,HL
LD HL,TITD_ACX.TYPE
POP BC
LDIR
; HL = TITD_ACX.NAME
LD (OPEN_PAK_FILE.name),HL
CALL OPEN_PAK_FILE ; patched
;
XOR A
LD HL,(PAK_FILE_FM.Size_HL)
LD DE,(PAK_FILE_FM.Size_IX)
;
.loop: EX AF,AF'
LD A,H
OR L
OR D
OR E
JR Z,.exit2Loop
EX AF,AF'
;
PUSH HL
PUSH DE
PUSH AF
;
CALL SET_PAGE_SLOT3
LD A,(PAK_FILE_FM)
LD HL,#C000
LD DE,#4000
LD C,Dss.Read
RST ToDSS
JP C,ERROR_EXIT
;
POP AF
POP DE
POP HL
INC A
CP GAME_NEED_MEM_PAGES
JP NC,ERROR_EXIT
;
CCF
LD BC,#4000
EX DE,HL
SBC HL,BC
EX DE,HL
JR Z,.loop
LD B,C
SBC HL,BC
JR NC,.loop
.exitLoop: ; ¢ë室, ¥á«¨ à §¬¥à ª®­äë ­¥ ªà â¥­ à §¬¥àã áâà ­¨æë
EX DE,HL
.loop2: LD (HL),#FF
INC HL
BIT 7,H
JR NZ,.loop2
.exit2Loop: ; ¢ë室, ¥á«¨ à §¬¥à ª®­äë ªà â¥­ à §¬¥àã áâà ­¨æë
LD C,Dss.Close
LD A,(PAK_FILE_FM)
RST ToDSS
JP C,ERROR_EXIT
;
LD HL,PAK_FILE_NAME
LD (OPEN_PAK_FILE.name),HL
CALL OPEN_PAK_FILE
; ª®áâë«ì ­  ¯à®¯ã᪠ª®­äë ¢ PAK ä ©«¥
LD A,(PAK_FILE_FM)
LD HL,0
LD IX,#6569; + 1
LD BC,Dss.Move_FP.FrStart
RST ToDSS
;
LD HL,PAGES_BUFFER
PUSH HL
LD A,(CURRENT_PAGE.SLOT3)
INC A
LD L,A
LD A,(HL)
LD C,BIOS.FreeMem
RST ToBIOS
JP C,SetUp_RESET_EXIT
;
POP HL
LD A,(HL)
LD B,A
LD A,ACEX.Config_PG.Sp2000
LD C,BIOS.RST_CONF.CUSTOM
RST ToBIOS
;
DI
LD A,SYS_PORT.CNF_0
OUT (SYS_PORT.RAM),A
;
LD A,(PAGES_BUFFER)
LD C,BIOS.FreeMem
RST ToBIOS
;
; restore HOLD port
LD D,CMOS_CELL.ScreenPosition
LD C,BIOS.CMOS_RD
RST ToBIOS
JR C,.run_game
;
LD B,A
LD A,ACEX.HOLD
LD C,BIOS.SET_PORTS
RST ToBIOS
;
LD DE,CAD_RESET_HANDLER
CALL SETUP_RESET_HANDLER
.run_game: JP l8423h.cont
TITD_ACX:
.TYPE: DZ '.ACX'
.NAME: BLOCK 9,0
;
;
CAD_RESET_HANDLER:
LD A,(Spec_Page.page_3) ; PAGE3
OUT (SLOT3),A
LD A,SYS_PORT.CNF_0
OUT (SYS_PORT.RAM),A
JP HARD_RESET
;
;
SETUP_RESET_HANDLER_NEW:
; “áâ ­ ¢«¨¢ ¥¬ ª«îç¨
PUSH HL
LD HL,Spec_Page.flag_R
LD (HL),"R"
INC HL
LD (HL),"S"
INC HL
LD (HL),"T"
POP HL
;
LD A,#FF
LD (Spec_Page.Reload_Version),A
;
RET
;
PREPARE_TO_EXIT_NEW: ;LD A,(.current_screen)
;XOR 1
;LD B,A
;LD A,Dss.SetVMod.grf640x256
;LD C,.SetVMod
;RST ToDSS
;
.current_vmode+1: LD A,Dss.SetVMod.txt80x32
.current_screen+1: LD B,high Dss.SetVMod.Screen_0
LD C,Dss.SetVMod
JP ToDSS
;
LOADER_STRINGS:
.Exit: DB "\r\nThunder in the Deep. Copyright (C) 2003 Deviants.\r\n"
DB "Bug fixes by Tolik_Trek@Sprinter_Team in 2024.\r\n"
DZ "Game over, bye)))\r\n"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BLOCK (stack_point - stack_point.size - 1)-$,0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Binary file not shown.