mirror of
https://github.com/Tolik-Trek/TITD.git
synced 2026-06-15 17:11:37 +03:00
Работает. теперь надо в дос перенести функцию рестора экрана
This commit is contained in:
parent
bab76bd4b2
commit
6548d0a49f
@ -1 +1 @@
|
|||||||
Subproject commit c7bcbd096d4674064766dc9f61121f4843ddd635
|
Subproject commit 4e4294ea21fab73299b8e389979c38d801f861b0
|
||||||
@ -13,9 +13,23 @@ program_start EQU NEW_CODE_START
|
|||||||
stack_point EQU #C000
|
stack_point EQU #C000
|
||||||
.size EQU 128
|
.size EQU 128
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
NEW_BUFFERS: ; For Zero page
|
||||||
|
.Palette: EQU #C000
|
||||||
|
.Palette.Size EQU 1024*8
|
||||||
|
.TXT_Screen EQU .Palette + .Palette.Size
|
||||||
|
.TXT_Screen.Size EQU 80*32*2
|
||||||
|
|
||||||
|
DSS_MIN_VERS:
|
||||||
|
.vers EQU 1
|
||||||
|
.modf EQU 70
|
||||||
|
.build EQU 999
|
||||||
|
|
||||||
GAME_NEED_MEM_PAGES EQU #C6
|
GAME_NEED_MEM_PAGES EQU #C6
|
||||||
PAGES_BUFFER EQU #BE00
|
PAGES_BUFFER EQU #BE00
|
||||||
.size EQU #100
|
.size EQU #100
|
||||||
|
;---------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXE_ORG #8000
|
EXE_ORG #8000
|
||||||
|
|
||||||
@ -224,11 +238,11 @@ l8205h: LD A,GAME_NEED_MEM_PAGES ;8205 3e c6 > .
|
|||||||
.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 . .
|
||||||
;
|
;
|
||||||
HARD_RESET: DI ;8233 f3 .
|
HARD_RESET: LD A,ACEX.Config_PG.Sp2000
|
||||||
LD A,ACEX.Config_PG.Sp2000
|
|
||||||
LD BC,BIOS.RST_CONF.CUSTOM
|
LD BC,BIOS.RST_CONF.CUSTOM
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
|
DI
|
||||||
CALL PREPARE_TO_EXIT_NEW
|
CALL PREPARE_TO_EXIT_NEW
|
||||||
;
|
;
|
||||||
.loop_exit: LD BC,Dss.Exit
|
.loop_exit: LD BC,Dss.Exit
|
||||||
@ -510,7 +524,7 @@ RESTORE_IM1_DSS:
|
|||||||
LD A,#C3 ;8387 3e 00 > .
|
LD A,#C3 ;8387 3e 00 > .
|
||||||
LD (#38),A ;8389 32 38 00 2 8 .
|
LD (#38),A ;8389 32 38 00 2 8 .
|
||||||
LD HL,#003B ;838c 21 00 00 ! . .
|
LD HL,#003B ;838c 21 00 00 ! . .
|
||||||
LD (#39),A ;838f 32 39 00 2 9 .
|
LD (#39),HL ;838f 32 39 00 2 9 .
|
||||||
RET ;8392 c9 .
|
RET ;8392 c9 .
|
||||||
|
|
||||||
l8393h: CALL sub_837fh ;8393 cd 7f 83 . . .
|
l8393h: CALL sub_837fh ;8393 cd 7f 83 . . .
|
||||||
@ -4265,9 +4279,9 @@ CURRENT_PAGE:
|
|||||||
|
|
||||||
GET_MEM_AND_PAGES:
|
GET_MEM_AND_PAGES:
|
||||||
LD (CURRENT_MEM_USED),A ;a1b7 32 b4 a1 2 . .
|
LD (CURRENT_MEM_USED),A ;a1b7 32 b4 a1 2 . .
|
||||||
LD C,BIOS.GetMem ;a1ba 0e c2 . .
|
LD C,Dss.GetMem ;a1ba 0e c2 . .
|
||||||
LD B,A ;a1bc 47 G
|
LD B,A ;a1bc 47 G
|
||||||
RST ToBIOS ;a1bd cf .
|
RST ToDSS ;a1bd cf .
|
||||||
JP C,l83a1h ;a1be da a1 83 . . .
|
JP C,l83a1h ;a1be da a1 83 . . .
|
||||||
;
|
;
|
||||||
LD (CURRENT_MEM_BLOCK_ID),A ;a1c1 32 af a2 2 . .
|
LD (CURRENT_MEM_BLOCK_ID),A ;a1c1 32 af a2 2 . .
|
||||||
@ -4277,9 +4291,9 @@ GET_MEM_AND_PAGES:
|
|||||||
JP C,l83a1h ;a1ca da a1 83 . . .
|
JP C,l83a1h ;a1ca da a1 83 . . .
|
||||||
RET ;a1cd c9 .
|
RET ;a1cd c9 .
|
||||||
|
|
||||||
FREE_MEM_: LD C,BIOS.FreeMem ;a1ce 0e c3 . .
|
FREE_MEM_: LD C,Dss.FreeMem ;a1ce 0e c3 . .
|
||||||
LD A,(CURRENT_MEM_BLOCK_ID) ;a1d0 3a af a2 : . .
|
LD A,(CURRENT_MEM_BLOCK_ID) ;a1d0 3a af a2 : . .
|
||||||
RST ToBIOS ;a1d3 cf .
|
RST ToDSS ;a1d3 cf .
|
||||||
JP C,SetUp_RESET_EXIT ;a1d4 da 63 83 . c .
|
JP C,SetUp_RESET_EXIT ;a1d4 da 63 83 . c .
|
||||||
RET ;a1d7 c9 .
|
RET ;a1d7 c9 .
|
||||||
|
|
||||||
@ -4338,12 +4352,12 @@ sub_a208h:
|
|||||||
la216h:
|
la216h:
|
||||||
XOR A ;a216 af .
|
XOR A ;a216 af .
|
||||||
INC A ;a217 3c <
|
INC A ;a217 3c <
|
||||||
LD BC,0ffa4h ;a218 01 a4 ff . . .
|
LD BC,256*#FF + BIOS.PIC_SET_PAL ;a218 01 a4 ff . . .
|
||||||
RST ToBIOS ;a21b cf .
|
RST ToBIOS ;a21b cf .
|
||||||
RET ;a21c c9 .
|
RET ;a21c c9 .
|
||||||
LD DE,00100h ;a21d 11 00 01 . . .
|
LD DE,00100h ;a21d 11 00 01 . . .
|
||||||
la220h:
|
la220h:
|
||||||
LD BC,0ffa4h ;a220 01 a4 ff . . .
|
LD BC,256*#FF + BIOS.PIC_SET_PAL ;a220 01 a4 ff . . .
|
||||||
LD HL,PALETTE_1 ;a223 21 83 a2 ! . .
|
LD HL,PALETTE_1 ;a223 21 83 a2 ! . .
|
||||||
XOR A ;a226 af .
|
XOR A ;a226 af .
|
||||||
PUSH DE ;a227 d5 .
|
PUSH DE ;a227 d5 .
|
||||||
@ -6113,37 +6127,46 @@ lad3eh:
|
|||||||
RET ;ae1b c9 .
|
RET ;ae1b c9 .
|
||||||
;
|
;
|
||||||
DZ 'Cash.dat' ;ae1c
|
DZ 'Cash.dat' ;ae1c
|
||||||
|
|
||||||
|
|
||||||
|
; [ ] FIX 19/10/2024
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; NEW CODE
|
; NEW CODE
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; [ ] FIX 19/10/2024
|
;***********************************************************************
|
||||||
NEW_CODE_START: LD HL,LOADER_STRINGS.Info
|
ERROR_OLD_DSS: LD HL,LOADER_STRINGS.OldDSS
|
||||||
|
LD C,Dss.PChars
|
||||||
|
RST ToDSS
|
||||||
|
JP GOTO_ERROR_EXIT
|
||||||
|
;***********************************************************************
|
||||||
|
|
||||||
|
NEW_CODE_START: DI
|
||||||
|
LD HL,LOADER_STRINGS.Info
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
;
|
;
|
||||||
LD C,Dss.Cursor
|
LD C,Dss.Version
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
LD (PREPARE_TO_EXIT_NEW.cursor),DE
|
|
||||||
;
|
;
|
||||||
|
SCF
|
||||||
|
LD HL,256*DSS_MIN_VERS.vers + DSS_MIN_VERS.modf
|
||||||
|
SBC HL,DE
|
||||||
|
JR NC,ERROR_OLD_DSS
|
||||||
|
LD HL,DSS_MIN_VERS.build
|
||||||
|
SBC HL,BC
|
||||||
|
JR NC,ERROR_OLD_DSS
|
||||||
|
;
|
||||||
LD C,Dss.GetVMod
|
LD C,Dss.GetVMod
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
JR C,.no_vmode
|
JR C,.no_vmode
|
||||||
CP #80
|
CP #80
|
||||||
JR NC,.no_vmode
|
CALL C,SAVE_TXT_SCREEN
|
||||||
;
|
;
|
||||||
LD (PREPARE_TO_EXIT_NEW.current_vmode),A
|
.no_vmode: CALL SAVE_PAL
|
||||||
LD A,B
|
|
||||||
LD (PREPARE_TO_EXIT_NEW.current_screen),A
|
|
||||||
;
|
;
|
||||||
LD A,Dss.SetVMod.grf320x256
|
LD A,GAME_NEED_MEM_PAGES
|
||||||
LD B,Dss.SetVMod
|
CALL GET_MEM_AND_PAGES
|
||||||
RST ToDSS
|
CALL GENERATE_PALETTE
|
||||||
.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)
|
IN A,(SLOT1)
|
||||||
LD (l8205h.mem_pg),A
|
LD (l8205h.mem_pg),A
|
||||||
;
|
;
|
||||||
@ -6254,8 +6277,8 @@ NEW_CODE_START: LD HL,LOADER_STRINGS.Info
|
|||||||
CALL SETUP_RESET_HANDLER
|
CALL SETUP_RESET_HANDLER
|
||||||
;
|
;
|
||||||
LD A,(PAGES_BUFFER)
|
LD A,(PAGES_BUFFER)
|
||||||
LD C,BIOS.FreeMem
|
LD C,Dss.FreeMem
|
||||||
RST ToBIOS
|
RST ToDSS
|
||||||
; restore HOLD port
|
; restore HOLD port
|
||||||
LD D,CMOS_CELL.ScreenPosition
|
LD D,CMOS_CELL.ScreenPosition
|
||||||
LD C,BIOS.CMOS_RD
|
LD C,BIOS.CMOS_RD
|
||||||
@ -6284,8 +6307,7 @@ CAD_RESET_HANDLER:
|
|||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
SETUP_RESET_HANDLER_NEW:
|
SETUP_RESET_HANDLER_NEW:; “áâ ¢«¨¢ ¥¬ ª«îç¨
|
||||||
; “áâ ¢«¨¢ ¥¬ ª«îç¨
|
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD HL,Spec_Page.flag_R
|
LD HL,Spec_Page.flag_R
|
||||||
LD (HL),"R"
|
LD (HL),"R"
|
||||||
@ -6311,25 +6333,112 @@ PREPARE_TO_EXIT_NEW: CALL RESTORE_IM1_DSS
|
|||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
LD A,(.current_screen)
|
LD A,(.current_screen)
|
||||||
XOR 1
|
LD E,A
|
||||||
LD B,A
|
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
|
||||||
LD A,Dss.SetVMod.grf640x256
|
RST ToBIOS
|
||||||
LD C,Dss.SetVMod
|
;
|
||||||
|
CALL RESTORE_PAL
|
||||||
|
;
|
||||||
|
LD BC,Dss.Lib_Sub.RestoreFont
|
||||||
RST ToDSS
|
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_vmode+1: LD A,Dss.SetVMod.txt80x32
|
||||||
.current_screen+2: LD BC,Dss.SetVMod.Screen_0
|
.current_screen+2: LD BC,Dss.SetVMod.Screen_0
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
;
|
;
|
||||||
.cursor+1: LD DE,0
|
.cursor+1: LD DE,0
|
||||||
LD C,Dss.Locate
|
LD C,Dss.Locate
|
||||||
JP ToDSS
|
RST ToDSS
|
||||||
|
LD C,Dss.WinRest
|
||||||
|
JR TXT_Screen_Copy_Restore
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;***********************************************************************
|
||||||
|
SAVE_PAL: IN A,(SLOT0)
|
||||||
|
EX AF,AF'
|
||||||
|
XOR A ; ZERO_PAGE
|
||||||
|
OUT (SLOT0),A
|
||||||
|
;
|
||||||
|
OUT (PORT_Y),A
|
||||||
|
LD A,#50
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD DE,NEW_BUFFERS.Palette - #C000
|
||||||
|
.loop: LD HL,#C3E0
|
||||||
|
LD BC,#20
|
||||||
|
LDIR
|
||||||
|
IN A,(PORT_Y)
|
||||||
|
INC A
|
||||||
|
OUT (PORT_Y),A
|
||||||
|
JR NZ,.loop
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT0),A
|
||||||
|
RET
|
||||||
|
;***********************************************************************
|
||||||
|
RESTORE_PAL: IN A,(SLOT0)
|
||||||
|
EX AF,AF'
|
||||||
|
XOR A ; ZERO_PAGE
|
||||||
|
OUT (SLOT0),A
|
||||||
|
;
|
||||||
|
LD A,#50
|
||||||
|
OUT (SLOT3),A
|
||||||
|
XOR A
|
||||||
|
OUT (PORT_Y),A
|
||||||
|
;
|
||||||
|
LD HL,NEW_BUFFERS.Palette - #C000
|
||||||
|
.loop: LD DE,#C3E0
|
||||||
|
LD BC,#20
|
||||||
|
LDIR
|
||||||
|
IN A,(PORT_Y)
|
||||||
|
INC A
|
||||||
|
OUT (PORT_Y),A
|
||||||
|
JR NZ,.loop
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT0),A
|
||||||
|
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 C,Dss.WinCopy
|
||||||
|
;;;;;;;;;
|
||||||
|
TXT_Screen_Copy_Restore:
|
||||||
|
LD A,(PREPARE_TO_EXIT_NEW.current_vmode)
|
||||||
|
SUB 2
|
||||||
|
LD DE,0
|
||||||
|
LD HL,#2050
|
||||||
|
JR NZ,.next
|
||||||
|
LD L,#28
|
||||||
|
.next: ;
|
||||||
|
LD B,ZERO_PAGE ; áâà ¨æ ¡ãä¥à
|
||||||
|
LD IX,NEW_BUFFERS.TXT_Screen
|
||||||
|
JP ToDSS
|
||||||
|
;***********************************************************************
|
||||||
|
|
||||||
LOADER_STRINGS:
|
LOADER_STRINGS:
|
||||||
.Info: DB "\r\nThunder in the Deep v1.10 fixed. Copyright (C) 2003 Deviants.\r\n"
|
.Info: DB "\r\nThunder in the Deep v1.10 fixed. Copyright (C) 2003 Deviants.\r\n"
|
||||||
DZ "Bug fixes by Tolik_Trek@Sprinter_Team in 2024.\r\n\r\n"
|
DZ "Bug fixes by Tolik_Trek@Sprinter_Team in 2024.\r\n\r\n"
|
||||||
|
.OldDSS: DZ "To run this version of TITD you need DSS v1.70.999 or higher."
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
BLOCK (stack_point - stack_point.size - 1)-$,0
|
ASSERT (stack_point - stack_point.size - 1)>$, TOO MANY CODE!!!
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
Loading…
Reference in New Issue
Block a user