From b64a54289f8396ee60a3d8b491a6e79ebaca7296 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 25 Oct 2024 00:10:13 +1000 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BF=D0=BE=D0=BF=D0=BB=D1=8B=D0=B2=D1=88?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B8=D0=B6=D0=B5=20SETUP=5FRESET=5FHANDLER?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- game_loader_dasm.a80 | 206 ++++++++++++++++++++++--------------------- 2 files changed, 108 insertions(+), 100 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 4e4294e..be501b0 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 4e4294ea21fab73299b8e389979c38d801f861b0 +Subproject commit be501b0cc276065a9981e471dd26f9b069af7604 diff --git a/game_loader_dasm.a80 b/game_loader_dasm.a80 index 3bc7082..05a687b 100644 --- a/game_loader_dasm.a80 +++ b/game_loader_dasm.a80 @@ -22,7 +22,7 @@ NEW_BUFFERS: ; For Zero page DSS_MIN_VERS: .vers EQU 1 .modf EQU 70 -.build EQU 999 +.build EQU 998 GAME_NEED_MEM_PAGES EQU #C6 PAGES_BUFFER EQU #BE00 @@ -238,7 +238,7 @@ l8205h: LD A,GAME_NEED_MEM_PAGES ;8205 3e c6 > . .mem_pg+1: LD A,5 ;822f 3e 05 > . OUT (SLOT1),A ;8231 d3 a2 . . ; -HARD_RESET: LD A,ACEX.Config_PG.Sp2000 +HARD_RESET: LD A,ACEX.Config_PG.Sp2000_AcexSetUpNow LD BC,BIOS.RST_CONF.CUSTOM RST ToBIOS ; @@ -462,31 +462,34 @@ GAME_CONF_NAME: DB 'GAME_00.ACX' ;830d DB 0 ;831c SETUP_RESET_HANDLER: - DI ;831d f3 . - IN A,(SLOT3) ;831e db e2 . . - LD (RESET_HANDLER_BEGIN.mem_pg),A ;8320 32 5d 83 2 ] . - 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 . . ; [ ] 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 . . + DI ;831d f3 . + LD A,ACEX.Config_PG.Sp2000_SoftRestartSet + LD BC,BIOS.RST_CONF.CUSTOM + RST ToBIOS + RET + ;IN A,(SLOT3) ;831e db e2 . . + ;LD (RESET_HANDLER_BEGIN.mem_pg),A ;8320 32 5d 83 2 ] . + ;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 . . + 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 . . + 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 : ] . + OUT (SLOT3),A ;834c d3 e2 . . + RET ;834e c9 . ; - 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 . . - 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 : ] . - OUT (SLOT3),A ;834c d3 e2 . . - RET ;834e c9 . + BLOCK #834F-$,0 RESET_HANDLER_BEGIN: DI ;834f f3 . LD SP,#bff0 ;8350 31 f0 bf 1 . . @@ -6156,13 +6159,7 @@ NEW_CODE_START: DI SBC HL,BC JR NC,ERROR_OLD_DSS ; - LD C,Dss.GetVMod - RST ToDSS - JR C,.no_vmode - CP #80 - CALL C,SAVE_TXT_SCREEN - ; -.no_vmode: CALL SAVE_PAL + CALL FULL_SAVE_TXT_SCREEN ; LD A,GAME_NEED_MEM_PAGES CALL GET_MEM_AND_PAGES @@ -6265,16 +6262,21 @@ NEW_CODE_START: DI POP HL LD A,(HL) LD B,A - LD A,ACEX.Config_PG.Sp2000 + LD A,ACEX.Config_PG.Sp2000_AcexSetUpNow LD C,BIOS.RST_CONF.CUSTOM RST ToBIOS ; DI LD A,SYS_PORT.CNF_0 OUT (SYS_PORT.RAM),A + ; на всякий случай + IN A,(SLOT3) + LD (RESET_HANDLER_BEGIN.mem_pg),A ; LD DE,CAD_RESET_HANDLER - CALL SETUP_RESET_HANDLER + LD A,ACEX.Config_PG.Sp2000_SoftRestartSet + LD BC,BIOS.RST_CONF.CUSTOM + RST ToBIOS ; LD A,(PAGES_BUFFER) LD C,Dss.FreeMem @@ -6300,71 +6302,30 @@ TITD_ACX: CAD_RESET_HANDLER: LD A,(Spec_Page.page_3) ; PAGE3 OUT (SLOT3),A - LD A,SYS_PORT.CNF_0 - OUT (SYS_PORT.ROM),A + ; LD A,SYS_PORT.CNF_0 + ; OUT (SYS_PORT.ROM),A LD BC,BIOS.REINIT.HARD_RESET JP ToBIOS_18 ; ; -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 -; +; 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: CALL RESTORE_IM1_DSS - ; - LD A,4 - LD C,BIOS.FN_SYNC - RST ToBIOS - ; - LD A,%1000'0000 - LD C,BIOS.FN_SYNC - RST ToBIOS - ; - LD A,(.current_screen) - LD E,A - LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default - RST ToBIOS - ; - CALL RESTORE_PAL - ; - LD BC,Dss.Lib_Sub.RestoreFont - RST ToDSS - ; - LD A,(.current_vmode) - CP Dss.SetVMod.txt80x32 + 1 - RET NC - ; - ; - ; LD A,(.current_screen) - ; XOR 1 - ; LD B,A - ; LD A,Dss.SetVMod.grf640x256 - ; LD C,Dss.SetVMod - ; RST ToDSS - ; -.current_vmode+1: LD A,Dss.SetVMod.txt80x32 -.current_screen+2: LD BC,Dss.SetVMod.Screen_0 - RST ToDSS - ; -.cursor+1: LD DE,0 - LD C,Dss.Locate - RST ToDSS - LD C,Dss.WinRest - JR TXT_Screen_Copy_Restore - ; - + JR FULL_RESTORE_SCREEN ;*********************************************************************** SAVE_PAL: IN A,(SLOT0) EX AF,AF' @@ -6412,18 +6373,14 @@ RESTORE_PAL: IN A,(SLOT0) RET ;*********************************************************************** SAVE_TXT_SCREEN: - LD (PREPARE_TO_EXIT_NEW.current_vmode),A - LD A,B - LD (PREPARE_TO_EXIT_NEW.current_screen),A - ; LD C,Dss.Cursor RST ToDSS - LD (PREPARE_TO_EXIT_NEW.cursor),DE + LD (FULL_RESTORE_SCREEN.cursor),DE ; LD C,Dss.WinCopy ;;;;;;;;; TXT_Screen_Copy_Restore: - LD A,(PREPARE_TO_EXIT_NEW.current_vmode) + LD A,(FULL_RESTORE_SCREEN.current_vmode) SUB 2 LD DE,0 LD HL,#2050 @@ -6434,6 +6391,57 @@ TXT_Screen_Copy_Restore: LD IX,NEW_BUFFERS.TXT_Screen JP ToDSS ;*********************************************************************** +FULL_SAVE_TXT_SCREEN: + LD C,Dss.GetVMod + RST ToDSS + JR C,.no_vmode + CP #80 + LD (FULL_RESTORE_SCREEN.current_vmode),A + LD A,B + LD (FULL_RESTORE_SCREEN.current_screen),A + CALL C,SAVE_TXT_SCREEN + ; +.no_vmode: JR SAVE_PAL +;*********************************************************************** +FULL_RESTORE_SCREEN: LD A,4 + LD C,BIOS.FN_SYNC + RST ToBIOS + ; + LD A,%1000'0000 + LD C,BIOS.FN_SYNC + RST ToBIOS + ; + LD A,(.current_screen) + LD E,A + LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default + RST ToBIOS + ; + CALL RESTORE_PAL + ; + LD BC,Dss.Lib_Sub.RestoreFont + RST ToDSS + ; + ; LD A,(.current_screen) + ; XOR 1 + ; LD B,A + ; LD A,Dss.SetVMod.grf640x256 + ; LD C,Dss.SetVMod + ; RST ToDSS + ; +.current_vmode+1: LD A,Dss.SetVMod.txt80x32 +.current_screen+2: LD BC,Dss.SetVMod.Screen_0 + RST ToDSS + ; + LD A,(.current_vmode) + CP Dss.SetVMod.txt80x32 + 1 + RET NC + ; +.cursor+1: LD DE,0 + LD C,Dss.Locate + RST ToDSS + LD C,Dss.WinRest + JR TXT_Screen_Copy_Restore +;*********************************************************************** LOADER_STRINGS: .Info: DB "\r\nThunder in the Deep v1.10 fixed. Copyright (C) 2003 Deviants.\r\n"