normal exit if acx file not found

This commit is contained in:
Tolik 2024-10-30 21:27:28 +10:00
parent 4a28068454
commit 4f4ec663fd

View File

@ -18,6 +18,7 @@ NEW_BUFFERS: ; For Zero page
.Palette.Size EQU 1024*8 .Palette.Size EQU 1024*8
.TXT_Screen EQU .Palette + .Palette.Size .TXT_Screen EQU .Palette + .Palette.Size
.TXT_Screen.Size EQU 80*32*2 .TXT_Screen.Size EQU 80*32*2
.TMP EQU #D000
DSS_MIN_VERS: DSS_MIN_VERS:
.vers EQU 1 .vers EQU 1
@ -5502,7 +5503,7 @@ la921h:
RET ;a94e c9 . RET ;a94e c9 .
OPEN_PAK_FILE: LD C,Dss.Open ;a94f 0e 11 . . OPEN_PAK_FILE: LD C,Dss.Open ;a94f 0e 11 . .
.name+1: LD HL,PAK_FILE_NAME ;a951 21 85 a9 ! . . LD HL,PAK_FILE_NAME ;a951 21 85 a9 ! . .
LD A,Dss.Open.R ;a954 3e 01 > . LD A,Dss.Open.R ;a954 3e 01 > .
RST ToDSS ;a956 d7 . RST ToDSS ;a956 d7 .
JP C,ERROR_EXIT ;a957 da 85 aa . . . JP C,ERROR_EXIT ;a957 da 85 aa . . .
@ -5510,7 +5511,7 @@ OPEN_PAK_FILE: LD C,Dss.Open ;a94f 0e 11 . .
LD (PAK_FILE_FM),A ;a95a 32 80 aa 2 . . LD (PAK_FILE_FM),A ;a95a 32 80 aa 2 . .
CALL CHECK_ZERO_FILE_SIZE ;a95d cd 6b aa . k . CALL CHECK_ZERO_FILE_SIZE ;a95d cd 6b aa . k .
JP Z,ERROR_EXIT ;a960 ca 85 aa . . . JP Z,ERROR_EXIT ;a960 ca 85 aa . . .
LD (PAK_FILE_FM.Size_HL),HL ;a963 22 81 aa " . . .nxt: LD (PAK_FILE_FM.Size_HL),HL ;a963 22 81 aa " . .
LD (PAK_FILE_FM.Size_IX),IX ;a966 dd 22 83 aa . " . . LD (PAK_FILE_FM.Size_IX),IX ;a966 dd 22 83 aa . " . .
; ;
LD BC,Dss.Move_FP.FrStart ;a96a 01 15 00 . . . LD BC,Dss.Move_FP.FrStart ;a96a 01 15 00 . . .
@ -6137,10 +6138,14 @@ lad3eh:
; NEW CODE ; NEW CODE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;*********************************************************************** ;***********************************************************************
ERROR_OLD_DSS: LD HL,LOADER_STRINGS.OldDSS NEW_ERROR_EXIT:
LD C,Dss.PChars .OLD_DSS: LD HL,LOADER_STRINGS.OldDSS
.print: LD C,Dss.PChars
RST ToDSS RST ToDSS
JP GOTO_ERROR_EXIT JP GOTO_ERROR_EXIT
;
.NO_ACX: LD HL,STRING_SPECIAL_no_acx
JR .print
;*********************************************************************** ;***********************************************************************
NEW_CODE_START: DI NEW_CODE_START: DI
@ -6153,93 +6158,23 @@ NEW_CODE_START: DI
SCF SCF
LD HL,256*DSS_MIN_VERS.vers + DSS_MIN_VERS.modf LD HL,256*DSS_MIN_VERS.vers + DSS_MIN_VERS.modf
SBC HL,DE SBC HL,DE
JR NC,ERROR_OLD_DSS JR NC,NEW_ERROR_EXIT.OLD_DSS
LD HL,DSS_MIN_VERS.build LD HL,DSS_MIN_VERS.build
SBC HL,BC SBC HL,BC
JR NC,ERROR_OLD_DSS JR NC,NEW_ERROR_EXIT.OLD_DSS
;
CALL FULL_SAVE_TXT_SCREEN
; ;
LD A,GAME_NEED_MEM_PAGES LD A,GAME_NEED_MEM_PAGES
CALL GET_MEM_AND_PAGES CALL GET_MEM_AND_PAGES
CALL GET_BITSTREAM
JR C,NEW_ERROR_EXIT.NO_ACX
;
CALL FULL_SAVE_TXT_SCREEN
CALL GENERATE_PALETTE CALL GENERATE_PALETTE
IN A,(SLOT1) IN A,(SLOT1)
LD (l8205h.mem_pg),A LD (l8205h.mem_pg),A
; ;
LD HL,TITD_ACX.NAME ;LD HL,PAK_FILE_NAME
LD BC,BIOS.FN_CRIPT.AcexAndBitstream ;LD (OPEN_PAK_FILE.name),HL
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 CALL OPEN_PAK_FILE
; ª®áâë«ì ­  ¯à®¯ã᪠ª®­äë ¢ PAK ä ©«¥ ; ª®áâë«ì ­  ¯à®¯ã᪠ª®­äë ¢ PAK ä ©«¥
LD A,(PAK_FILE_FM) LD A,(PAK_FILE_FM)
@ -6305,24 +6240,93 @@ CAD_RESET_HANDLER:
; OUT (SYS_PORT.ROM),A ; OUT (SYS_PORT.ROM),A
LD BC,BIOS.REINIT.HARD_RESET LD BC,BIOS.REINIT.HARD_RESET
JP ToBIOS_18 JP ToBIOS_18
; ;
; ;
; SETUP_RESET_HANDLER_NEW:; “áâ ­ ¢«¨¢ ¥¬ ª«îç¨ GET_BITSTREAM: LD HL,TITD_ACX.NAME
; PUSH HL LD BC,BIOS.FN_CRIPT.AcexAndBitstream
; LD HL,Spec_Page.flag_R RST ToBIOS
; LD (HL),"R" ;
; INC HL LD HL,TITD_ACX.NAME
; LD (HL),"S" LD BC,5
; INC HL PUSH BC
; LD (HL),"T" XOR A
; POP HL CPIR
; ; SCF
; LD A,#FF RET PO
; LD (Spec_Page.Reload_Version),A ;
; ; DEC HL
; RET ;LD (HL)," "
; ; EX DE,HL
LD HL,TITD_ACX.TYPE
POP BC
LDIR
; HL = TITD_ACX.NAME
LD C,Dss.Open
LD A,Dss.Open.R
RST ToDSS
RET C
;
LD (PAK_FILE_FM),A
CALL CHECK_ZERO_FILE_SIZE
SCF
RET Z
CALL OPEN_PAK_FILE.nxt
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
RET C
;
POP AF
POP DE
POP HL
INC A
CP GAME_NEED_MEM_PAGES
CCF
RET C
;
SCF
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)
JP ToDSS
;
STRING_SPECIAL_no_acx: ;83a4
DZ "\r\n[Thunder In The Deep Special Message] : Error with ACX file for your chip!\r\n"
;
PREPARE_TO_EXIT_NEW: CALL RESTORE_IM1_DSS PREPARE_TO_EXIT_NEW: CALL RESTORE_IM1_DSS
JR FULL_RESTORE_SCREEN JR FULL_RESTORE_SCREEN
;*********************************************************************** ;***********************************************************************