diff --git a/game_loader_dasm.a80 b/game_loader_dasm.a80 index 1fc73ba..9718b1c 100644 --- a/game_loader_dasm.a80 +++ b/game_loader_dasm.a80 @@ -8,8 +8,10 @@ ;--------------------------------------- Loader_length EQU 0 code_addr EQU #8000 -program_start EQU code_addr +;program_start EQU code_addr +program_start EQU NEW_CODE_START stack_point EQU #C000 +.size EQU 128 ;--------------------------------------- GAME_NEED_MEM_PAGES EQU #C6 PAGES_BUFFER EQU #BE00 @@ -200,166 +202,156 @@ l81dch: POP AF ;8203 f1 . RET ;8204 c9 . -l8205h: 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 . - ; [ ] FIX 19/10/2024 - IN A,(SLOT1) - LD (.mem_pg),A - ; - LD HL,TITD_ACX.NAME - LD BC,BIOS.FN_CRIPT.AcexAndBitstream + ; [ ] FIX 19/10/2024 - процедура не вызывается +l8205h: 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 . + 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 . { +.mem_pg+1: LD A,5 ;822f 3e 05 > . + OUT (SLOT1),A ;8231 d3 a2 . . + ; +HARD_RESET: DI ;8233 f3 . + LD A,ACEX.Config_PG.Sp2000 + LD BC,BIOS.RST_CONF.CUSTOM RST ToBIOS ; - LD HL,TITD_ACX.NAME - LD BC,5 - PUSH BC - XOR A - CPIR - ;JP PO,SetUp_RESET_EXIT ; экономим память + CALL PREPARE_TO_EXIT_NEW ; - 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 > . - OUT (SLOT1),A ;8231 d3 a2 . . -l8233h: DI ;8233 f3 . - 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 . . -l8246h: 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 l8246h ;8250 18 f4 . . +.loop_exit: LD BC,Dss.Exit + RST ToDSS + DI + JR .loop_exit + ; + BLOCK #8252-$,0 + ;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 . HALT ;8253 76 v ; -NEW_CONF_SETUP: - ; HL = TITD_ACX.NAME - LD (OPEN_PAK_FILE.name),HL - CALL OPEN_PAK_FILE ; patched +; NEW_CONF_SETUP: +; ; 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 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: DI ;8254 f3 . LD BC,#1FFD ;8255 01 fd 1f . . . @@ -422,8 +414,7 @@ INSTALL_TITD.ACX: .IM_FLAG: DB 0 ;82d7 00 . .reload_str: DB ACEX.RELOAD_STRING ;82d8 .reload_str.size: EQU $-.reload_str -*/ - BLOCK #82e8-$,0 +; BLOCK #82e8-$,0 GET_RESOURCE_TITD.ACX: @@ -463,18 +454,20 @@ SETUP_RESET_HANDLER: LD A,Spec_Page ;8323 3e 41 > A OUT (SLOT3),A ;8325 d3 e2 . . LD (Spec_Page.RET_addr),DE ;8327 ed 53 f4 ff . S . . -l832bh: - LD A,'Z' ;832b 3e 5a > Z - 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 . . + ; [ ] FIX zx pages 20/10/2024 + CALL SETUP_RESET_HANDLER_NEW + BLOCK #8335-$,0 + ;LD A,'Z' ;832b 3e 5a > Z + ;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 . . LD (Spec_Page.page_0),A ;8337 32 f0 ff 2 . . IN A,(SLOT1) ;833a db a2 . . LD (Spec_Page.page_1),A ;833c 32 f1 ff 2 . . IN A,(SLOT2) ;833f db c2 . . LD (Spec_Page.page_2),A ;8341 32 f2 ff 2 . . -l8344h: IN A,(SLOT3) ;8344 db e2 . . LD (Spec_Page.page_3),A ;8346 32 f3 ff 2 . . 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 . < LD A,(Spec_Page.page_0) ;8357 3a f0 ff : . . 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 . . JP l8415h ;8360 c3 15 84 . . . SetUp_RESET_EXIT: LD DE,RESET_HANDLER_EXIT ;8363 11 df 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 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 A,(PAK_FILE_FM) ;a735 3a 80 aa : . . LD B,000h ;a738 06 00 . . - LD C,015h ;a73a 0e 15 . . + LD C,Dss.Move_FP ;a73a 0e 15 . . RST ToDSS ;a73c d7 . LD B,01bh ;a73d 06 1b . . 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 A,(PAK_FILE_FM) ;a794 3a 80 aa : . . LD B,000h ;a797 06 00 . . - LD C,015h ;a799 0e 15 . . + LD C,Dss.Move_FP ;a799 0e 15 . . RST ToDSS ;a79b d7 . LD B,01bh ;a79c 06 1b . . 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 A,(PAK_FILE_FM) ;a7c9 3a 80 aa : . . LD B,000h ;a7cc 06 00 . . - LD C,015h ;a7ce 0e 15 . . + LD C,Dss.Move_FP ;a7ce 0e 15 . . RST ToDSS ;a7d0 d7 . LD B,01bh ;a7d1 06 1b . . 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 A,(PAK_FILE_FM) ;a7fb 3a 80 aa : . . LD B,000h ;a7fe 06 00 . . - LD C,015h ;a800 0e 15 . . + LD C,Dss.Move_FP ;a800 0e 15 . . RST ToDSS ;a802 d7 . LD B,01bh ;a803 06 1b . . 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 HL,(la84fh) ;a834 2a 4f a8 * O . 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 : . . RST ToDSS ;a83e d7 . 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 IX,00000h ;a87a dd 21 00 00 . ! . . LD B,001h ;a87e 06 01 . . - LD C,015h ;a880 0e 15 . . + LD C,Dss.Move_FP ;a880 0e 15 . . RST ToDSS ;a882 d7 . RET ;a883 c9 . sub_a884h: @@ -5634,7 +5627,7 @@ GET_NEXT_HR_HEADER_BYTE: JP Z,ERROR_EXIT ;aa2b ca 85 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 BC,00015h ;aa35 01 15 00 . . . + LD BC,Dss.Move_FP.FrStart ;aa35 01 15 00 . . . LD H,B ;aa38 60 ` LD L,B ;aa39 68 h LD IX,00000h ;aa3a dd 21 00 00 . ! . . @@ -5694,7 +5687,7 @@ sub_aa8ah: LD HL,(la86bh) ;aa96 2a 6b a8 * k . LD A,(PAK_FILE_FM) ;aa99 3a 80 aa : . . LD B,000h ;aa9c 06 00 . . - LD C,015h ;aa9e 0e 15 . . + LD C,Dss.Move_FP ;aa9e 0e 15 . . RST ToDSS ;aaa0 d7 . LD B,06eh ;aaa1 06 6e . n LD C,005h ;aaa3 0e 05 . . @@ -5711,7 +5704,7 @@ sub_aaadh: LD HL,(la86fh) ;aab9 2a 6f a8 * o . LD A,(PAK_FILE_FM) ;aabc 3a 80 aa : . . LD B,000h ;aabf 06 00 . . - LD C,015h ;aac1 0e 15 . . + LD C,Dss.Move_FP ;aac1 0e 15 . . RST ToDSS ;aac3 d7 . LD B,06eh ;aac4 06 6e . n LD C,005h ;aac6 0e 05 . . @@ -5728,7 +5721,7 @@ sub_aad0h: LD HL,(la867h) ;aadc 2a 67 a8 * g . LD A,(PAK_FILE_FM) ;aadf 3a 80 aa : . . LD B,000h ;aae2 06 00 . . - LD C,015h ;aae4 0e 15 . . + LD C,Dss.Move_FP ;aae4 0e 15 . . RST ToDSS ;aae6 d7 . LD B,06eh ;aae7 06 6e . n LD C,005h ;aae9 0e 05 . . @@ -5745,7 +5738,7 @@ sub_aaf3h: LD HL,(la85fh) ;aaff 2a 5f a8 * _ . LD A,(PAK_FILE_FM) ;ab02 3a 80 aa : . . LD B,000h ;ab05 06 00 . . - LD C,015h ;ab07 0e 15 . . + LD C,Dss.Move_FP ;ab07 0e 15 . . RST ToDSS ;ab09 d7 . LD B,06eh ;ab0a 06 6e . n LD C,005h ;ab0c 0e 05 . . @@ -5768,7 +5761,7 @@ sub_ab25h: LD HL,(la863h) ;ab31 2a 63 a8 * c . LD A,(PAK_FILE_FM) ;ab34 3a 80 aa : . . LD B,000h ;ab37 06 00 . . - LD C,015h ;ab39 0e 15 . . + LD C,Dss.Move_FP ;ab39 0e 15 . . RST ToDSS ;ab3b d7 . LD B,06eh ;ab3c 06 6e . n LD C,005h ;ab3e 0e 05 . . @@ -6119,6 +6112,201 @@ lad3eh: RET ;ae1b c9 . ; 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 + ; + 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 ; - BLOCK #B000-$,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 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; \ No newline at end of file diff --git a/reversing/K30.ACX b/reversing/K30.ACX index 2e70bb6..ceb6071 100644 Binary files a/reversing/K30.ACX and b/reversing/K30.ACX differ