1
0
mirror of https://github.com/Tolik-Trek/DOOM2.git synced 2026-06-15 09:01:34 +03:00

correct work in DSS

This commit is contained in:
Anatoliy Belyanskiy 2024-02-11 05:05:29 +10:00
parent b27ca37cc9
commit 4259263dee
4 changed files with 460 additions and 398 deletions

View File

@ -15,9 +15,7 @@ SND_READ_SECTORS EQU 4
Module__D2_FRAM__Start EQU $ Module__D2_FRAM__Start EQU $
; ;
TRACE: TRACE: IN A,(SLOT1)
IN A,(SLOT1)
LD (TRACE_RET_SLOT1),A LD (TRACE_RET_SLOT1),A
IN A,(SLOT3) IN A,(SLOT3)
LD (TRACE_RET_SLOT3),A LD (TRACE_RET_SLOT3),A
@ -47,19 +45,19 @@ TRACE:
NO_SKY_2: NO_SKY_2:
OUT (SLOT1),A OUT (SLOT1),A
LD A,0 ;????????? ­¥ ­ã¦­®? ;LD A,0 ;????????? ­¥ ­ã¦­®?
LD C,80 LD C,80
SKY_LOOP_1: SKY_LOOP_1:
ACC_SetBlockSize ACC_SetBlockSize
LD B,0 LD A,0
ACC_CopyBlock ACC_CopyBlock
LD B,(HL) LD B,(HL)
ACC_SetBlockSize ACC_SetBlockSize
LD B,#80 LD B,#80
ACC_Off ACC_Off
XOR A ;XOR A
OUT (PORT_Y),A OUT (PORT_Y),A
ACC_CopyScreenBlock ACC_CopyScreenBlock
@ -118,7 +116,7 @@ NO_NEXT_SKY:
EXX EXX
SCREEN_1+1: SCREEN_1+1:
LD DE,#C040 ; ­ ç «® íªà ­  LD DE,ScreenStartAddress ; ­ ç «® íªà ­ 
LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!! LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!!
EXX EXX
; ;
@ -154,7 +152,6 @@ PLACE_L+1:
OUT (SLOT1),A OUT (SLOT1),A
LD (CONT_PAGE),A LD (CONT_PAGE),A
; JR TRACE_LOOP ; JR TRACE_LOOP
TRACE_LOOP: TRACE_LOOP:
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
@ -162,29 +159,28 @@ TRACE_LOOP:
OUT (PORT_Y),A OUT (PORT_Y),A
REPT 16 REPT 16
LD E,(HL) ; ¯¥à¢ë© ¨ ¤ «¥¥ á«¥¤ãî騩 ªã¡¨ª LD E,(HL) ; ¯¥à¢ë© ¨ ¤ «¥¥ á«¥¤ãî騩 ªã¡¨ª
LD A,(DE) ; ¥áâì ¨«¨ ­¥â? LD A,(DE) ; ¥áâì ¨«¨ ­¥â?
AND A AND A
JR NZ,TRACE_CONT ; ¥á«¨ ¥áâì, à¨á®¢ âì!! JR NZ,TRACE_CONT ; ¥á«¨ ¥áâì, à¨á®¢ âì!!
INC L INC L
ENDR ENDR
PURE_LINE: PURE_LINE:
;
EXX EXX
ACC_SetBlockSize ACC_SetBlockSize
LD A,#80 ; ¯ãáâ ï á⥭ª  LD A,#80 ; ¯ãáâ ï á⥭ª 
ACC_Off ACC_Off
; LD (DE),A ; LINE-Z-bufer ;LD (DE),A ; LINE-Z-Buffer
OUT (PORT_Y),A OUT (PORT_Y),A
;
LD A,(COLOR_LO) LD A,(COLOR_LO)
;
ACC_FillScreenOneByte ACC_FillScreenOneByte
LD (DE),A LD (DE),A
ACC_Off ACC_Off
LD A,#70 ; Z-bufer LD A,#70 ; Z-Buffer
LD (DE),A LD (DE),A
EXX EXX
; ;
JR NEXT_ANGLE JR NEXT_ANGLE
@ -234,33 +230,33 @@ PLACE_L2+1: LD A,5
; ;
EXX EXX
LD H,TABLE_X/256 LD H,TABLE_X/256
LD L,A ; ¢ëá®â  TABLE_X - â ¡«¨æ  ¢ëá®â LD L,A ; ¢ëá®â  TABLE_X - â ¡«¨æ  ¢ëá®â
LD B,(HL) ; áâ àè ï ç áâì ª®í䍿¨¥­â  LD B,(HL) ; áâ àè ï ç áâì ª®í䍿¨¥­â 
; ld b,0 ; ld b,0
INC H INC H
LD L,(HL) ; ¬« ¤è ï ç áâì ª®í䍿¨¥­â /ᬥ饭¨¥ ¢ á⥭ª¥ LD L,(HL) ; ¬« ¤è ï ç áâì ª®í䍿¨¥­â /ᬥ饭¨¥ ¢ á⥭ª¥
; LD C,0 ; LD C,0
OUT (C),L ; ¬ áèâ ¡¨à®¢ ­¨¥ OUT (C),L ; ¬ áèâ ¡¨à®¢ ­¨¥
; OUTI ; B 㬥­ìè ¥âáï á­ ç « ! ; OUTI ; B 㬥­ìè ¥âáï á­ ç « !
BIT 7,A BIT 7,A
JR Z,HIGH_1 ; 64 â®çª¨, ­¥ ­  ¢¥áì íªà ­ JR Z,HIGH_1 ; 64 â®çª¨, ­¥ ­  ¢¥áì íªà ­
; <64 â®çª¨, ­  ¢¥áì íªà ­ ; <64 â®çª¨, ­  ¢¥áì íªà ­
XOR A XOR A
OUT (PORT_Y),A ; á á ¬®£® ­ ç «  OUT (PORT_Y),A ; á á ¬®£® ­ ç « 
ACC_SetBlockSize ACC_SetBlockSize
LD (DE),A ; 256 ¡ ©â ˆ LINE-Z-bufer!!!! LD (DE),A ; 256 ¡ ©â ˆ LINE-Z-Buffer!!!!
ACC_Off ACC_Off
LD A,#58 LD A,#58
OUT (SLOT3),A OUT (SLOT3),A
ACC_CopyScreenBlock ACC_CopyScreenBlock
LD (DE),A ; ”ˆƒ€Š‘ ¢áî «¨­¨î!!! LD (DE),A ; ”ˆƒ€Š‘ ¢áî «¨­¨î!!!
ACC_Off ACC_Off
XOR A XOR A
LD (DE),A ; LINE-Z-bufer!!!! LD (DE),A ; LINE-Z-Buffer!!!!
EXX EXX
; ;
JR NEXT_ANGLE JR NEXT_ANGLE
@ -268,7 +264,7 @@ PLACE_L2+1: LD A,5
HIGH_1: HIGH_1:
; A - ¢ëá®â , á ª®â®à®© à¨áã¥âáï á⥭ª  ; A - ¢ëá®â , á ª®â®à®© à¨áã¥âáï á⥭ª 
ACC_SetBlockSize ACC_SetBlockSize
LD (DE),A ; ç¨á«® â®ç¥ª ¯®â®«ª  ¨ ¯®« ! & LINE-Z-bufer LD (DE),A ; ç¨á«® â®ç¥ª ¯®â®«ª  ¨ ¯®« ! & LINE-Z-Buffer
ACC_Off ACC_Off
NEG ; ¯®«ãç¨âì ¯®«®¦¥­¨¥ ­ ç «  ¯®«  NEG ; ¯®«ãç¨âì ¯®«®¦¥­¨¥ ­ ç «  ¯®« 
OUT (PORT_Y),A OUT (PORT_Y),A
@ -873,40 +869,39 @@ WALL: IN A,(SLOT3)
LD (WALL_SLOT1_RET),A LD (WALL_SLOT1_RET),A
IN A,(PORT_Y) IN A,(PORT_Y)
LD (WALL_PORT_Y_RET),A LD (WALL_PORT_Y_RET),A
LD A,#58 LD A,#5C
OUT (SLOT3),A OUT (SLOT3),A
LD A,(IX+0) ; áâà ­¨æ  á⥭ª¨ LD A,(IX+0) ; áâà ­¨æ  á⥭ª¨
OUT (SLOT1),A OUT (SLOT1),A
EXX EXX
LD C,0 ; ¯®àâ ¬ áèâ ¡  LD C,0 ; ¯®àâ ¬ áèâ ¡ 
;
LD H,TABLE_X/256 ; â ¡«¨æ  ¢ëá®â ¨ ª®í䍿¨¥­â®¢ ¬ áèâ ¡¨à®¢ ­¨ï LD H,TABLE_X/256 ; â ¡«¨æ  ¢ëá®â ¨ ª®í䍿¨¥­â®¢ ¬ áèâ ¡¨à®¢ ­¨ï
LD L,(IX+3) ; ¯®«®¦¥­¨¥ ¯® Y / ®¯à¥¤¥«ï¥â ¢ëá®âã LD L,(IX+3) ; ¯®«®¦¥­¨¥ ¯® Y / ®¯à¥¤¥«ï¥â ¢ëá®âã
LD A,(HL) ; ¬ áèâ ¡ - LOW LD A,(HL) ; ¬ áèâ ¡ - LOW
AND 3 AND 3
LD (X_ADD),A LD (X_ADD),A
INC H INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH LD A,(HL) ; ¬ áèâ ¡ - HIGH
LD (X_ADD2),A LD (X_ADD2),A
DEC H DEC H
;
LD A,L LD A,L
ADD A,A ADD A,A
NEG ; è¨à¨­  ¯® £®à¨§®­â «¨ NEG ; è¨à¨­  ¯® £®à¨§®­â «¨
;
BIT 0,(IX+M_VAR3) BIT 0,(IX+M_VAR3)
JR Z,NO_DEL2 JR Z,NO_DEL2
RRA RRA
AND #7F AND #7F
NO_DEL2: NO_DEL2: BIT 1,(IX+M_VAR3)
BIT 1,(IX+M_VAR3) JR Z,NO_DEL4
JR Z,NO_DEL4 AND A
AND A RRA
RRA RRA
RRA AND #3F
AND #3F
NO_DEL4: NO_DEL4:
EXX EXX
@ -930,7 +925,7 @@ NO_DEL4:
; ; ¢ A ᪮«ìª® «¨­¨© ¤® ­ ç «  íªà ­  ; ; ¢ A ᪮«ìª® «¨­¨© ¤® ­ ç «  íªà ­ 
;WALL_NO_SCF: ;WALL_NO_SCF:
; ;
; LD HL,140h ; LD HL,#0140
; AND A ; AND A
; SBC HL,DE ; SBC HL,DE
; LD A,L ; ¢ A - ᪮«ìª® «¨­¨© ®áâ «®áì ¤® ª®­æ  íªà ­ ?? ; LD A,L ; ¢ A - ᪮«ìª® «¨­¨© ®áâ «®áì ¤® ª®­æ  íªà ­ ??
@ -947,9 +942,10 @@ NO_DEL4:
; LD E,A ; LD E,A
LD D,0 LD D,0
SBC HL,DE SBC HL,DE
;!FIXIT ¯®á«¥ ¢ëç¨â ­¨ï ¢ HL  ¤à¥á ¯® ª®â®à®¬ã ¡ã¤¥â § ¯¨áì ¡«®ª , ¬®¦¥â § «¥§ âì ­  èà¨äâë
EX DE,HL EX DE,HL
LD H,(IX+2) ; áâ à訩  ¤à¥á á⥭ª¨ LD H,(IX+2) ; áâ à訩  ¤à¥á á⥭ª¨
LD L,(IX+1) LD L,(IX+1)
LD A,#58 LD A,#58
@ -960,58 +956,59 @@ WOLL_LOOP:
OUT (PORT_Y),A OUT (PORT_Y),A
LD A,D LD A,D
;!FIXIT âã⠯஢¥àª  ­  áâ à訩  ¤à¥á, ­® èà¨äâ ¬ íâ® ­¥ ¯®¬®¦¥â
CP #C3 CP #C3
JR NC,NO_WRITE_ALL ; ­¥ ¢ë¢®¤¨âì §  íªà ­ ¨ § ª®­ç¨âì JR NC,NO_WRITE_ALL ; ­¥ ¢ë¢®¤¨âì §  íªà ­ ¨ § ª®­ç¨âì
CP #C0 CP #C0
JR C,NO_WRITE_LINE ; ­¥ ¢ë¢®¤¨âì §  íªà ­ JR C,NO_WRITE_LINE ; ­¥ ¢ë¢®¤¨âì §  íªà ­
;!FIXIT âãâ ¬®¦¥â ç¨â âìáï ¨§ ®¡« á⨠èà¨ä⮢
LD A,(DE) ; Z-bufer!!! LD A,(DE) ; ç⥭¨¥ ¨§ Z-Buffer
EXX EXX
CP L CP L
EXX EXX
JR C,NO_WRITE_LINE JR C,NO_WRITE_LINE
EXX EXX
LD B,1 LD B,1
OUT (C),C ; ¬ áèâ ¡ - 1 OUT (C),C ; ¬ áèâ ¡ - 1
ACC_SetBlockSize ACC_SetBlockSize
LD B,#40 ; § ¤ âì ¤«¨­ã «¨­¨¨ LD B,#40 ; § ¤ âì ¤«¨­ã «¨­¨¨
ACC_Off ACC_Off
EXX EXX
ACC_CopyBlock ACC_CopyBlock
LD A,(HL) ; ¢§ïâì «¨­¨î á⥭ª¨ LD A,(HL) ; ¢§ïâì «¨­¨î á⥭ª¨
ACC_Off ACC_Off
EXX EXX
; L - ¢ëá®â  -128..0..127 !!! ; L - ¢ëá®â  -128..0..127 !!!
LD B,(HL) LD B,(HL)
INC H INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH LD A,(HL) ; ¬ áèâ ¡ - HIGH
OUT (C),A OUT (C),A
INC H INC H
LD A,L LD A,L
ADD A,A ADD A,A
JR NC,NO_Z_A1 JR NC,NO_Z_A1
XOR A XOR A
NO_Z_A1: NO_Z_A1:
NEG NEG
ACC_SetBlockSize ACC_SetBlockSize
LD (HL),A ; § ¤ âì ¤«¨­ã «¨­¨¨ LD (HL),A ; § ¤ âì ¤«¨­ã «¨­¨¨
ACC_Off ACC_Off
DEC H DEC H
DEC H DEC H
LD A,L LD A,L
EXX EXX
BIT 7,A BIT 7,A
JR Z,NO_Z_A JR Z,NO_Z_A
XOR A XOR A
NO_Z_A: NO_Z_A:
OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y
;!FIXIT âãâ ¬®¦¥â ¯¨á âìáï ¢ ®¡« áâì èà¨ä⮢
ACC_CopyScreenBlock ACC_CopyScreenBlock
LD (DE),A ; ¢ë¢¥á⨠«¨­¨î LD (DE),A ; ¢ë¢¥á⨠«¨­¨î
ACC_Off ACC_Off
LD A,E LD A,E
@ -1021,16 +1018,16 @@ NO_Z_A:
; ;
NO_WRITE_LINE: NO_WRITE_LINE:
INC DE ; ­®¢®¥ §­ ç¥­¨¥ X INC DE ; ­®¢®¥ §­ ç¥­¨¥ X
LD A,C LD A,C
X_ADD2+1: X_ADD2+1:
ADD A,0 ; X-add-parameter 2 ADD A,0 ; X-add-parameter 2
LD C,A LD C,A
X_ADD+1: X_ADD+1:
LD A,0 ; X-add-parameter LD A,0 ; X-add-parameter
ADC A,H ADC A,H
LD H,A ; á«¥¤ãîé ï «¨­¨ï WOLL LD H,A ; á«¥¤ãîé ï «¨­¨ï WOLL
DJNZ WOLL_LOOP DJNZ WOLL_LOOP
@ -1174,7 +1171,7 @@ MAP_L8:
LD A,(HL) LD A,(HL)
LD (DE),A LD (DE),A
LD A,L LD A,L
SUB 40H SUB #40
LD L,A LD L,A
LD A,H LD A,H
SBC A,0 SBC A,0
@ -1605,15 +1602,15 @@ KBD_INT:
.NO_LAST_KEY: .NO_LAST_KEY:
POP AF POP AF
CP 20 ; CTRL CP 20 ; CTRL
JR Z,.EFF_ON JR Z,.EFF_ON
CP 117 ; KEY_UP CP 117 ; KEY_UP
JR Z,.DIR_UP JR Z,.DIR_UP
CP 114 ; KEY_DN CP 114 ; KEY_DN
JR Z,.DIR_DN JR Z,.DIR_DN
CP 107 ; KEY_LF CP 107 ; KEY_LF
JR Z,.DIR_LF JR Z,.DIR_LF
CP 116 ; KEY_RT CP 116 ; KEY_RT
JR Z,.DIR_RT JR Z,.DIR_RT
JR .KBD_INT2 JR .KBD_INT2
@ -1671,79 +1668,72 @@ OFF_BYTE: DB #FF
; ;
TAB_ANGLE: TAB_ANGLE:
DB 0,1 ; 0 DB 0 , 1 ; 0
DB 1,1 ; 45 DB 1 , 1 ; 45
DB 1,1 ; 45 DB 1 , 1 ; 45
DB 1,0 ; 90 DB 1 , 0 ; 90
DB 1,0 ; 90 DB 1 , 0 ; 90
DB 1,-1 ; 135 DB 1 , -1 ; 135
DB 1,-1 ; 135 DB 1 , -1 ; 135
DB 0,-1 ; 180 DB 0 , -1 ; 180
DB 0,-1 ; 180 DB 0 , -1 ; 180
DB -1,-1 DB -1 , -1
DB -1,-1 DB -1 , -1
DB -1,0 DB -1 , 0
DB -1,0 DB -1 , 0
DB -1,1 DB -1 , 1
DB -1,1 DB -1 , 1
DB 0,1 ; 0 DB 0 , 1 ; 0
TAB_ANGLE2: TAB_ANGLE2:
DB 0,2 ; 0 DB 0 , 2 ; 0
DB 1,2 ; 22 DB 1 , 2 ; 22
DB 2,2 ; 45 DB 2 , 2 ; 45
DB 2,1 ; 67 DB 2 , 1 ; 67
DB 2,0 ; 90 DB 2 , 0 ; 90
DB 2,-1 ; 112 DB 2 , -1 ; 112
DB 2,-2 ; 135 DB 2 , -2 ; 135
DB 1,-2 ; 157 DB 1 , -2 ; 157
DB 0,-2 ; 180 DB 0 , -2 ; 180
DB -1,-2 DB -1 , -2
DB -2,-2 DB -2 , -2
DB -2,-1 DB -2 , -1
DB -2,0 DB -2 , 0
DB -2,1 DB -2 , 1
DB -2,2 DB -2 , 2
DB -1,2 ; 0 DB -1 , 2 ; 0
TAB_ANGLE3: TAB_ANGLE3:
DB 4 , 2 ; 67
DB 4,2 ; 67 DB 4 , 1 ; 67
DB 4,1 ; 67 DB 4 , 0 ; 90
DB 4 , -1 ; 112
DB 4,0 ; 90 DB 4 , -2 ; 135
DB 4,-1 ; 112 DB 4 , -3 ; 135
DB 4,-2 ; 135 DB 4 , -4 ; 135
DB 4,-3 ; 135 DB 3 , -4 ; 157
DB 4,-4 ; 135 DB 2 , -4 ; 157
DB 3,-4 ; 157 DB 1 , -4 ; 157
DB 2,-4 ; 157 DB 0 , -4 ; 180
DB 1,-4 ; 157 DB -1 , -4
DB -2 , -4
DB 0,-4 ; 180 DB -3 , -4
DB -1,-4 DB -4 , -4
DB -2,-4 DB -4 , -3
DB -3,-4 DB -4 , -2
DB -4,-4 DB -4 , -1
DB -4,-3 DB -4 , 0
DB -4,-2 DB -4 , 1
DB -4,-1 DB -4 , 2
DB -4 , 3
DB -4,0 DB -4 , 4 ; 0
DB -4,1 DB -3 , 4 ; 0
DB -4,2 DB -2 , 4 ; 0
DB -4,3 DB -1 , 4 ; 0
DB -4,4 ; 0 DB 0 , 4 ; 0
DB -3,4 ; 0 DB 1 , 4 ; 0
DB -2,4 ; 0 DB 2 , 4 ; 22
DB -1,4 ; 0 DB 3 , 4 ; 45
DB 4 , 4 ; 45
DB 0,4 ; 0 DB 4 , 3 ; 45
DB 1,4 ; 0
DB 2,4 ; 22
DB 3,4 ; 45
DB 4,4 ; 45
DB 4,3 ; 45
MONSTR_ALL: MONSTR_ALL:
@ -1775,7 +1765,7 @@ MONSTR_LOOP:
SUB (IX+M_X+1) ; ¯®«®¦¥­¨¥ ¬®­áâà  SUB (IX+M_X+1) ; ¯®«®¦¥­¨¥ ¬®­áâà 
ADD A,64 ADD A,64
JR Z,NO_M_OUT JR Z,NO_M_OUT
BIT 7,A ; ¯à®¢¥àª  ­  ¤ «ì­®áâì BIT 7,A ; ¯à®¢¥àª  ­  ¤ «ì­®áâì
JR NZ,NO_M_OUT ; ­¥ ¢ë¢®¤¨âì JR NZ,NO_M_OUT ; ­¥ ¢ë¢®¤¨âì
SUB 64 SUB 64
@ -1792,7 +1782,7 @@ MONSTR_LOOP:
SUB 64 SUB 64
NEG NEG
LD H,A ; H - Y, L - X LD H,A ; H - Y, L - X
OR L OR L
JR Z,NO_M_OUT ; ¯à®¢¥àª  ­  0 JR Z,NO_M_OUT ; ¯à®¢¥àª  ­  0
@ -1800,7 +1790,7 @@ MONSTR_LOOP:
BIT 7,H BIT 7,H
JR Z,A_NO_ADD4 JR Z,A_NO_ADD4
LD A,H ; ¯®¢®à®â ­  180 -X->X; -Y->Y LD A,H ; ¯®¢®à®â ­  180 -X->X; -Y->Y
NEG NEG
LD H,A LD H,A
LD A,L LD A,L
@ -1810,7 +1800,7 @@ MONSTR_LOOP:
A_NO_ADD4: A_NO_ADD4:
BIT 7,L BIT 7,L
JR Z,A_NO_ADD2 JR Z,A_NO_ADD2
LD A,L ; ¯®¢®à®â ­  90 Y->X; -X->Y LD A,L ; ¯®¢®à®â ­  90 Y->X; -X->Y
NEG NEG
LD L,H LD L,H
LD H,A LD H,A
@ -1823,7 +1813,6 @@ A_NO_ADD2:
; H - Y-ª®®à¤¨­ â  ; H - Y-ª®®à¤¨­ â 
MONSTR_ALL1: MONSTR_ALL1:
LD A,L LD A,L
ADD A,A ADD A,A
ADD A,A ADD A,A
@ -1839,23 +1828,23 @@ MONSTR_ALL1:
LD A,(PAGE_M_PLACE) LD A,(PAGE_M_PLACE)
OUT (SLOT1),A OUT (SLOT1),A
LD E,(HL) ; 㣮« ¬« ¤è¨© LD E,(HL) ; 㣮« ¬« ¤è¨©
INC L INC L
LD D,(HL) ; 㣮« áâ à訩 LD D,(HL) ; 㣮« áâ à訩
INC L INC L
LD C,(HL) ; ¢ëá®â  LD C,(HL) ; ¢ëá®â 
POP AF POP AF
OUT (SLOT1),A OUT (SLOT1),A
LD A,D LD A,D
ADD A,B ADD A,B
LD D,A ; ¤®¡ ¢¨âì ª¢ ¤à ­â LD D,A ; ¤®¡ ¢¨âì ª¢ ¤à ­â
DEC C DEC C
BIT 7,C BIT 7,C
JR Z,MONST_H1 JR Z,MONST_H1
LD C,0 ; ¬®­áâà à冷¬ LD C,0 ; ¬®­áâà à冷¬
MONST_H1: MONST_H1:
INC C INC C
LD (IX+M_HIGH),C ; ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ LD (IX+M_HIGH),C ; ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨
@ -1880,12 +1869,14 @@ MONST_H1:
LD (IX+M_HOR),L ; 㣮« LD (IX+M_HOR),L ; 㣮«
LD (IX+M_HOR+1),H LD (IX+M_HOR+1),H
LD DE,128 ; LD DE,128 ; € çñ¡ ­¥ ã¯à®áâ¨âì â ª:
ADD HL,DE ; ADD HL,DE ; LD DE,256+320-128
; LD DE,256+320 ; SBC HL,DE
; AND A ; ¨ ¢áñ... HL ¬®¦¥â ¯¥à¥¯®«­ïâìáï ¯à¨ ADD 128? - ­¥â
; SBC HL,DE ; ; ¯à®¢¥àª  ¯®¯ ¤ ­¨ï ¬®­áâà  ¢ 㣮« §à¥­¨ï
LD DE,256+320-128
SBC HL,DE ; ¯à®¢¥àª  ¯®¯ ¤ ­¨ï ¬®­áâà  ¢ 㣮« §à¥­¨ï
LD DE,256+320
AND A
SBC HL,DE ; ¯à®¢¥àª  ¯®¯ ¤ ­¨ï ¬®­áâà  ¢ 㣮« §à¥­¨ï
CALL C,WALL CALL C,WALL
@ -1902,15 +1893,15 @@ MONSTR_NEXT_P:
RET NZ RET NZ
LD A,(IX+M_VAR2) ; áç¥â稪 横«  LD A,(IX+M_VAR2) ; áç¥â稪 横« 
AND 0Fh AND #0F
RLCA RLCA
RLCA RLCA
RLCA RLCA
RLCA RLCA
ADD A,(IX+M_VAR2) ; ¤®¡ ¢¨âì ¬« ¤è¨© ¡ ©â ª áâ à襬ã ADD A,(IX+M_VAR2) ; ¤®¡ ¢¨âì ¬« ¤è¨© ¡ ©â ª áâ à襬ã
LD (IX+M_VAR2),A LD (IX+M_VAR2),A
AND 0F0h AND #F0
RET NZ ; ¢¥à­ãâìáï, ¥á«¨ ­¥ 0 RET NZ ; ¢¥à­ãâìáï, ¥á«¨ ­¥ 0
; JR NC,NO_ADD_MX ; JR NC,NO_ADD_MX
BIT 6,(IX+M_VAR3) ; ¡¨â ¥¤¨­¨ç­®£® ¯®ª §  横«  BIT 6,(IX+M_VAR3) ; ¡¨â ¥¤¨­¨ç­®£® ¯®ª §  横« 
@ -1962,15 +1953,15 @@ CONT_MONS:
LD A,(IX+M_ADR+1) ; ¯¥à¥ª«îç â¥«ì  ¤à¥á  LD A,(IX+M_ADR+1) ; ¯¥à¥ª«îç â¥«ì  ¤à¥á 
ADD A,(IX+M_VAR4) ; ᪮«ìª® ¤®¡ ¢«ïâì ADD A,(IX+M_VAR4) ; ᪮«ìª® ¤®¡ ¢«ïâì
AND 3Fh AND #3F
OR 40h OR #40
LD (IX+M_ADR+1),A LD (IX+M_ADR+1),A
CP 40h ; ¯à¨§­ ª § ¢¥à襭¨ï 横«  CP #40 ; ¯à¨§­ ª § ¢¥à襭¨ï 横« 
RET RET
SW_MONS: SW_MONS:
LD A,(IX+M_ADR) ; ¯¥à¥ª«îç â¥«ì  ¤à¥á  LD A,(IX+M_ADR) ; ¯¥à¥ª«îç â¥«ì  ¤à¥á 
ADD A,40H ADD A,#40
LD (IX+M_ADR),A LD (IX+M_ADR),A
AND A ; ¯à¨§­ ª § ¢¥à襭¨ï 横«  AND A ; ¯à¨§­ ª § ¢¥à襭¨ï 横« 
;NO_ADD_MX: ;NO_ADD_MX:
@ -2009,9 +2000,9 @@ SAVE_P2: DW 0
SAVE_PIC: SAVE_PIC:
IN A,(SCREEN_SWITCH) IN A,(SCREEN_SWITCH)
AND 1 AND 1
LD HL,#C040 LD HL,ScreenStartAddress
JR NZ,SET_1X JR NZ,SET_1X
LD HL,#C180 LD HL,ScreenStartAddress + #0140
SET_1X: SET_1X:
LD IX,TABLE_PIC LD IX,TABLE_PIC
LD A,(IX) LD A,(IX)

438
DOOM2.asm
View File

@ -5,7 +5,8 @@
;--------------------------------------- ;---------------------------------------
*/ */
ScreenStartAddress EQU #C040
;ScreenStartAddress EQU #C000
; ;
;---------------------------[Defines section]--------------------------- ;---------------------------[Defines section]---------------------------
DEFINE EXE_HEADER 1 DEFINE EXE_HEADER 1
@ -71,15 +72,15 @@ CMD_Line+1:
LD HL,#8080 LD HL,#8080
CALL SET_HOME_PATH CALL SET_HOME_PATH
;--------[§ £à㧪  à¥áãàᮢ ¨£àë]------- ;--------[§ £à㧪  à¥áãàᮢ ¨£àë]-------
; ¢ë¯®«­¥­® ¢ ¢¨¤¥ ª®áâë«ì­®© § £«ã誨
LD HL,Loading_TXT LD HL,Loading_TXT
LD C,Dss.PChars LD C,Dss.PChars
RST ToDSS RST ToDSS
; ;
CALL SAVE_ALL
; ¢ë¯®«­¥­® ¢ ¢¨¤¥ ª®áâë«ì­®© § £«ã誨
CALL Load_Resources CALL Load_Resources
; ;
CALL SAVE_PAL ;CALL SAVE_TXT_SCREEN
CALL SAVE_TXT_SCREEN
; LD A,Dss.SetVMod.grf320x256 ; LD A,Dss.SetVMod.grf320x256
; LD BC,Dss.SetVMod.Screen_1 ; LD BC,Dss.SetVMod.Screen_1
; RST ToDSS ; RST ToDSS
@ -111,7 +112,7 @@ CMD_Line+1:
ld a,(RAMBlkIDs.d2_fram) ld a,(RAMBlkIDs.d2_fram)
ld (D2_FRAM_page),a ld (D2_FRAM_page),a
;----[] ;----[;!FIXIT ¯¥à¥¤¥« âì ¬ã§«® ­  API 5x]
; ‡ ¯à è¨¢ ¥¬ áâà ­¨æã ¤«ï ª â «®£  ; ‡ ¯à è¨¢ ¥¬ áâà ­¨æã ¤«ï ª â «®£ 
; á®å࠭塞 ¥ñ ü ¢ ª®¤¥ ; á®å࠭塞 ¥ñ ü ¢ ª®¤¥
; ;
@ -142,8 +143,8 @@ CMD_Line+1:
CALL SET_PAL CALL SET_PAL
;----[®âªàëâì ¯®àâë ¬ áèâ ¡¨à®¢ ­¨ï]---- ;----[®âªàëâì ¯®àâë ¬ áèâ ¡¨à®¢ ­¨ï]----
; ®¤¨­ ¢­ãâ७­¨© ¯®àâ ¬ áèâ ¡¨à®¢ ­¨ï ¬ ¯¯¨âáï ­  ¤¨ ¯¯ §®­ #XX00 ; ®¤¨­ ¢­ãâ७­¨© ¯®àâ ¬ áèâ ¡¨à®¢ ­¨ï ¬ ¯¯¨âáï ­  ¤¨ ¯¯ §®­
; ¢­¥è­¨å ¯®à⮢. Write, Dos off, CNF 0. ; #XX00 ¢­¥è­¨å ¯®à⮢. Write, Dos off, CNF 0.
LD A,1 LD A,1
LD HL, %0000'0100'0000'0000 ; §­ ç¥­¨¥ LD HL, %0000'0100'0000'0000 ; §­ ç¥­¨¥
LD DE, %1111'1110'0110'1111 ; ¬ áª  LD DE, %1111'1110'0110'1111 ; ¬ áª 
@ -166,7 +167,7 @@ CMD_Line+1:
; EX AF,AF' ; EX AF,AF'
; OUT (SLOT3),A ; OUT (SLOT3),A
; €ªâ¨¢ æ¨ï €ªá¥«ï ¬ áèâ ¡¨à®¢ ­¨ï, ®¡à â­® ⮫쪮 ç¥à¥§ à¥á¥â ; €ªâ¨¢ æ¨ï €ªá¥«ï ¬ áèâ ¡¨à®¢ ­¨ï, ®¡à â­® ⮫쪮 ç¥à¥§ à¥á¥â
LD BC,#100 ; C - ¬ áèâ ¡ 1:1 LD BC,#0100 ; C - ¬ áèâ ¡ 1:1
OUT (C),C OUT (C),C
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
@ -188,18 +189,6 @@ CMD_Line+1:
; ;
;-----------[EXIT Procedure]------------; ;-----------[EXIT Procedure]------------;
RETURN_POINT: RETURN_POINT:
; DI
; LD A,#10
; LD BC,#1FFD
; OUT (C),A
; LD A,RESET_PAGE
; OUT (SLOT3),A
; LD (#C000),HL
; HALT_L:
; ;DI
; HALT
; JR HALT_L
IN A,(FastRAM.OFF) IN A,(FastRAM.OFF)
LD A,SYS_PORT.BIOS LD A,SYS_PORT.BIOS
OUT (SYS_PORT.RAM),A OUT (SYS_PORT.RAM),A
@ -210,6 +199,10 @@ RETURN_POINT:
; ;
CALL RESTORE_ALL CALL RESTORE_ALL
; ;
LD HL,GOTO_EXIT
LD C,Dss.PChars
RST ToDSS
;
.loop: LD BC,Dss.Exit .loop: LD BC,Dss.Exit
RST ToDSS RST ToDSS
JR .loop JR .loop
@ -299,19 +292,18 @@ CLEAR_GRAF_SCR:
XOR A XOR A
OUT (PORT_Y),A OUT (PORT_Y),A
LD SP,#C040 + 640 LD SP,ScreenStartAddress + 640
LD B,640/4 LD B,640/4
;!!!!!!!!!!![®¯â¨¬¨§¨à®¢ âì]!!!!!!!!!!!! ;!TODO ![®¯â¨¬¨§¨à®¢ âì]!
LOOP_CLS:
ACC_SetBlockSize ACC_SetBlockSize
LD E,0 LD E,0
LD D,E LD D,E
LOOP_CLS:
ACC_FillScreenOneByte ACC_FillScreenOneByte
PUSH DE PUSH DE
PUSH DE PUSH DE
ACC_Off ACC_Off
DJNZ LOOP_CLS DJNZ LOOP_CLS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SPSave2+1: SPSave2+1:
@ -466,9 +458,9 @@ MAIN: CALL INIT_TABLE
; !FIXIT ¯¥à¥¤¥« âì «®£¨ªã ¯®¤ ­®¢ë© ¡¨®á? ; !FIXIT ¯¥à¥¤¥« âì «®£¨ªã ¯®¤ ­®¢ë© ¡¨®á?
;---[ãáâ ­®¢ª  ᨭåàë, ®ç¨á⪠ íªà ­ ]-- ;---[ãáâ ­®¢ª  ᨭåàë, ®ç¨á⪠ íªà ­ ]--
LD A,2 ; ०¨¬ Pentagon - 320 áâப ¢ íªà ­¥ ; LD A,2 ; ०¨¬ Pentagon - 320 áâப ¢ íªà ­¥
LD C,BIOS.FN_SYNC ; LD C,BIOS.FN_SYNC
RST ToBIOS ; RST ToBIOS
;--------------------------------------- ;---------------------------------------
;------[Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­]------ ;------[Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­]------
@ -480,45 +472,22 @@ MAIN: CALL INIT_TABLE
; HL - ¬¥áâ® ­  íªà ­¥ ¯® §­ ª®¬¥áâ ¬ ; HL - ¬¥áâ® ­  íªà ­¥ ¯® §­ ª®¬¥áâ ¬
; (ª®¯¨ï ¢ IX+2,3), ¢ ­®¢ëå ¢¥àá¨ïå ; (ª®¯¨ï ¢ IX+2,3), ¢ ­®¢ëå ¢¥àá¨ïå
; ¡¨®á  §­ ç¥­¨¥ HL ­¥ áãé¥á⢥­­® ; ¡¨®á  §­ ç¥­¨¥ HL ­¥ áãé¥á⢥­­®
;
LD HL,#4000 LD HL,#4000
LD E,1 LD E,0
LD B,8 ; £à ä¨ç¥áª®¥ ®ª­® 0, HL - ¯®«®¦¥­¨¥ ®ª­  LD B,8 ; £à ä¨ç¥áª®¥ ®ª­® 0, HL - ¯®«®¦¥­¨¥ ®ª­ 
LD C,BIOS.LP_OPEN_S LD C,BIOS.LP_OPEN_S
RST ToBIOS RST ToBIOS
;
LD HL,#5000 LD HL,#5000
LD E,1 LD E,1
LD B,9 ; £à ä¨ç¥áª®¥ ®ª­® 1, HL - ¯®«®¦¥­¨¥ ®ª­  LD B,9 ; £à ä¨ç¥áª®¥ ®ª­® 1, HL - ¯®«®¦¥­¨¥ ®ª­ 
LD C,BIOS.LP_OPEN_S LD C,BIOS.LP_OPEN_S
RST ToBIOS RST ToBIOS
/*
LD A,Dss.SetVMod.grf320x256
LD BC,Dss.SetVMod.Screen_0
RST ToDSS
LD A,Dss.SetVMod.grf320x256
LD BC,Dss.SetVMod.Screen_1
RST ToDSS
;£à ä¨ç¥áª®¥ ®ª­® 0
PIC_320X256_1:
DB 40,32,0,0,32,0,08,0
DB 40,32,0,0,96,0,48,0
DB 40,32,0,0,32,0,00,0 ;4
DB 40,32,0,0,96,0,40,0 ;6
;£à ä¨ç¥áª®¥ ®ª­® 1
PIC_320X256_2:
; 320x256. £à ä¨ç¥áª®¥, 0-© íªà ­
TAB_320x256_0
; 320x256. £à ä¨ç¥áª®¥, 1-© íªà ­
TAB_320x256_1
*/
;--------------------------------------- ;---------------------------------------
LD A,1 LD A,(RESTORE_ALL.scr)
OUT (SCREEN_SWITCH),A OUT (SCREEN_SWITCH),A
;----[¯¥à¥¡à®á ç á⨠ª®¤  ¢ FastRAM]---- ;----[¯¥à¥¡à®á ç á⨠ª®¤  ¢ FastRAM]----
IN A,(SLOT3) IN A,(SLOT3)
@ -732,13 +701,13 @@ CONT_WORK:
SCR_SWITCH: SCR_SWITCH:
IN A,(SCREEN_SWITCH) IN A,(SCREEN_SWITCH)
AND 1 ;AND 1
XOR 1 XOR 1
OUT (SCREEN_SWITCH),A OUT (SCREEN_SWITCH),A
LD DE,#C040 LD DE,ScreenStartAddress
JR Z,SET_1 JR Z,SET_1
LD DE,#C180 LD DE,ScreenStartAddress + #0140
SET_1: SET_1:
LD (SCREEN_1),DE LD (SCREEN_1),DE
RET RET
@ -1607,131 +1576,246 @@ SET_HOME_PATH:
RET RET
;*********************************************************************** ;***********************************************************************
SAVE_PAL: SAVE_PAL:
IN A,(SLOT2) LD A,SYS_PORT.BIOS
PUSH AF OUT (SYS_PORT.ON),A
OUT (SLOT3),A IN A,(FastRAM.ON)
;
LD HL,Pal_Restore_Buffer+#4000
LD DE,0
LD A,4
LD C,BIOS.PIC_GET_PAL
RST ToBIOS
;
; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0
; LD A,5
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024
; LD DE,0
; LD A,6
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024+1024
; LD DE,0
; LD A,7
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
;
POP AF
OUT (SLOT3),A
RET
;***********************************************************************
RESTORE_PAL:
;
IN A,(SLOT2)
PUSH AF
OUT (SLOT3),A
;
LD HL,Pal_Restore_Buffer+#4000
LD DE,0
LD A,4
LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
RST ToBIOS
;
; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0
; LD A,5
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024
; LD DE,0
; LD A,6
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024+1024
; LD DE,0
; LD A,7
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
;
POP AF
OUT (SLOT3),A
RET
;***********************************************************************
;!TODO âãâ ­¥ ¯à®¢¥àï¥âáï ०¨¬ 80 ¨«¨ 40
SAVE_TXT_SCREEN:
LD C,BIOS.LP_GET_PLACE
RST ToBIOS
LD (LOAD_TXT_SCREEN.CURS),DE
LD IX,#4000 + TXT_SCREEN
LD HL,#2050 ; #2028
;
; LD (LOAD_TXT_SCREEN.SVHL1),HL
LD DE,#0000
IN A,(SLOT2)
LD B,A
LD C,BIOS.WIN_COPY
JP ToBIOS
LOAD_TXT_SCREEN:
LD IX,#4000 + TXT_SCREEN
.SVHL1+1: LD HL,#2050 ; #2028
LD DE,#0000
IN A,(SLOT2)
LD B,A
LD C,BIOS.WIN_RESTORE
RST ToBIOS
;
.CURS+1: LD DE,#0000
LD C,Dss.Locate
JP ToDSS
;***********************************************************************
RESTORE_ALL:
LD A,1 LD A,1
LD HL, %0000'0100'0000'0000 ; §­ ç¥­¨¥ OUT (FastRAM.SLOT0),A
LD DE, %1111'1110'0110'1111 ; ¬ áª 
LD BC,0*256 + BIOS.DCP_CONFIG
RST ToBIOS
; ;
;LD B,3 ; 3 - ãáâ ­®¢ª  CGA ¯ «¨âàë LD A,#50
;LD C,BIOS.SET_PAL_INIT ; ­®¬¥à ä㭪樨 OUT (SLOT3),A
;RST ToBIOS ; ãáâ ­®¢ª  ¯ «¨âàë XOR A
; OUT (PORT_Y),A
LD A,Dss.SetVMod.txt80x32
LD BC,Dss.SetVMod.Screen_0
RST ToDSS
LD A,Dss.SetVMod.txt80x32
LD BC,Dss.SetVMod.Screen_1
RST ToDSS
;
CALL RESTORE_PAL
; ;
LD DE,0 LD DE,0
LD HL,#2050 .loop: LD HL,#C3E0
LD BC,COLORS.CGA.INC.LGRAY*256 + BIOS.LP_CLS_WIN LD BC,#20
RST ToBIOS LDIR
; IN A,(PORT_Y)
CALL LOAD_TXT_SCREEN INC A
OUT (PORT_Y),A
JR NZ,.loop
; ;
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
XOR A
OUT (SYS_PORT.OFF),A
RET RET
; IN A,(SLOT3)
; PUSH AF
; IN A,(SLOT2)
; OUT (SLOT3),A
; ;
; LD HL,Pal_Restore_Buffer+#4000
; LD DE,0
; LD A,#80 + 0
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0
; LD A,#80 + 1
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024
; LD DE,0
; LD A,6
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024+1024
; LD DE,0
; LD A,7
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
;
; POP AF
; OUT (SLOT3),A
; RET
;*********************************************************************** ;***********************************************************************
RESTORE_PAL:
LD A,SYS_PORT.BIOS
OUT (SYS_PORT.ON),A
IN A,(FastRAM.ON)
LD A,1
OUT (FastRAM.SLOT0),A
;
LD A,#50
OUT (SLOT3),A
XOR A
OUT (PORT_Y),A
;
LD HL,0
.loop: LD DE,#C3E0
LD BC,#20
LDIR
IN A,(PORT_Y)
INC A
OUT (PORT_Y),A
JR NZ,.loop
;
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
XOR A
OUT (SYS_PORT.OFF),A
RET
;
; IN A,(SLOT2)
; PUSH AF
; OUT (SLOT3),A
; ;
; LD HL,Pal_Restore_Buffer+#4000
; LD DE,0
; LD A,4
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
;
; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0
; LD A,5
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024
; LD DE,0
; LD A,6
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024+1024
; LD DE,0
; LD A,7
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
;
; POP AF
; OUT (SLOT3),A
; RET
;***********************************************************************
;!TODO âãâ ­¥ ¯à®¢¥àï¥âáï ०¨¬ 80 ¨«¨ 40
; DEFINE _TXT_SCREEN #E000
; SAVE_TXT_SCREEN:
; DI
; LD C,BIOS.LP_GET_PLACE
; RST ToBIOS
; LD (LOAD_TXT_SCREEN.CURS),DE
; ;
; XOR A
; LD B,SHARED_PAGE
; LD HL,#2050 ; #2028
; LD DE,#0000
; LD IX,_TXT_SCREEN
; LD C,BIOS.WIN_COPY
; JP ToBIOS
; LOAD_TXT_SCREEN:
; DI
; XOR A
; LD B,SHARED_PAGE
; LD HL,#2050 ; #2028
; LD DE,#0000
; LD IX,_TXT_SCREEN
; LD C,BIOS.WIN_RESTORE
; RST ToBIOS
; ;
; .CURS+1: LD DE,#0000
; LD C,Dss.Locate
; JP ToDSS
;***********************************************************************
RESTORE_ALL:
; LD B,3 ; 3 - ãáâ ­®¢ª  CGA ¯ «¨âàë
; LD C,BIOS.SET_PAL_INIT ; ­®¬¥à ä㭪樨
; RST ToBIOS ; ãáâ ­®¢ª  ¯ «¨âàë
CALL RESTORE_PAL
;
.mode+1: LD A,Dss.SetVMod.txt80x32
.scr+2: LD BC,Dss.SetVMod
RST ToDSS
;
LD BC,Dss.Lib_Sub.RestoreFont
RST ToDSS
;
LD A,(.mode)
CP #80
RET NC
;
.cursor+1:
LD DE,0
LD C,Dss.Locate
RST ToDSS
LD C,Dss.WinRest
JP TXT_Screen_Copy_Restore
;
;***********************************************************************
SAVE_ALL:
CALL SAVE_PAL
; ã§­ âì ¢¨¤¥®à¥¦¨¬
LD C,Dss.GetVMod
RST ToDSS
LD (RESTORE_ALL.mode),A
LD A,B
LD (RESTORE_ALL.scr),A
; ¥á«¨ ०¨¬ ⥪áâ®¢ë© - á®åà ­¨âì ®ª­®
LD A,(RESTORE_ALL.mode)
CP #80
RET NC
;
LD C,Dss.Cursor
RST ToDSS
LD (RESTORE_ALL.cursor),DE
;
LD C,Dss.WinCopy
;JP TXT_Screen_Copy_Restore
;****************************
TXT_Screen_Copy_Restore:
LD A,Dss.WinCopy
SUB C
PUSH AF
PUSH BC
CALL NZ,SCREEN_IN_CACHE
;
LD A,(RESTORE_ALL.mode)
SUB 2
LD DE,0
LD HL,#2050
JR NZ,.next
LD L,#28
.next: IN A,(SLOT2)
POP BC
LD B,A
LD IX,TXT_SCREEN
RST ToDSS
POP AF
RET NZ
;DEC A
;JP SCREEN_IN_CACHE
;****************************
SCREEN_IN_CACHE:
LD A,SYS_PORT.BIOS
OUT (SYS_PORT.ON),A
IN A,(FastRAM.ON)
LD A,1
OUT (FastRAM.SLOT0),A
;
LD HL,TXT_SCREEN
LD DE,1024*8 ; à §¬¥à ¯ «¨âàë
JR Z,.no_change
EX DE,HL
.no_change:
LD BC,80*32*2 ; ¬ ªá¨¬ «ì­ë© à §¬¥à ⥪á⮢®£® íªà ­ 
LDIR
;
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
XOR A
OUT (SYS_PORT.OFF),A
RET
;*********************************************************************** ;***********************************************************************
;---------------[Tables]---------------- ;---------------[Tables]----------------
ALIGN 2,0 ALIGN 2,0
@ -1764,6 +1848,7 @@ SND_DIR: DZ "MUSIC"
;Up_Dir: DZ ".." ;Up_Dir: DZ ".."
; ;
Loading_TXT: DZ "\r\nPlease wait, resources are loading..." Loading_TXT: DZ "\r\nPlease wait, resources are loading..."
GOTO_EXIT: DZ "\r\n < GAME OVER))) >"
; ;
; IFN NORM_syncPORT ; IFN NORM_syncPORT
@ -1786,8 +1871,7 @@ Loading_TXT: DZ "\r\nPlease wait, resources are loading..."
;CURRENT_DIR: BLOCK 257,0 ;CURRENT_DIR: BLOCK 257,0
;------------------------------------ ;------------------------------------
Pal_Restore_Buffer EQU $ ;Temp_Buffer + 256 Temp_Buffer EQU $
Temp_Buffer EQU Pal_Restore_Buffer + 1024 + 1024
TXT_SCREEN EQU Temp_Buffer + 257 TXT_SCREEN EQU Temp_Buffer + 257
; ;
; ;

View File

@ -1,5 +1,6 @@
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;!FIXIT ¯¥à¥¤¥« âì ¬ã§«® ­  API 5x
;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------; ;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------;
INIT_HDD_WORK: INIT_HDD_WORK:
.currentDisk+1: ; .currentDisk+1: ;
@ -61,20 +62,6 @@ INIT_HDD_WORK:
OUT (SLOT3),A OUT (SLOT3),A
;[ ] music and dirs ;[ ] music and dirs
; LD A,(CURRENT_DIR+1)
; AND A
; JR Z,.skip_dir
;
; LD HL,Up_Dir
; LD C,Dss.ChDir
; RST ToDSS
;
; LD A,'\' ;
; LD HL,CURRENT_DIR+257
; LD BC,257 ;!HARDCODE か┃<E3818B> 痰牀<E797B0> <20>
; CPDR
; INC HL
;
LD HL,SND_DIR LD HL,SND_DIR
LD DE,Temp_Buffer LD DE,Temp_Buffer
LD A,FAT_ATTR.DIRECTORY LD A,FAT_ATTR.DIRECTORY

@ -1 +1 @@
Subproject commit 1a384e2e43f985438aafa6f7fed3e7552d7b6f3d Subproject commit b8a215d38afde3eed48f39eb961e96cdb6d9e426