This commit is contained in:
Anatoliy Belyanskiy 2024-01-10 09:24:13 +10:00
parent 86e658d970
commit 4e79de923d
2 changed files with 42 additions and 80 deletions

View File

@ -8,13 +8,13 @@
DEFINE MUSIC_22khz 1 DEFINE MUSIC_22khz 1
ENDIF ENDIF
IF MUSIC_22khz IF MUSIC_22khz
; ; #5944x128 blocks for play ; #5944x128 blocks for play
DEFINE _memPagesForMuz 179 DEFINE _memPagesForMuz 179
DEFINE _ramDiskNumForMuz 3 DEFINE _ramDiskNumForMuz 3
DEFINE _lastPageMuzOffset #5E00 DEFINE _lastPageMuzOffset #5E00
ELSE ELSE
DEFINE _memPagesForMuz 29 DEFINE _memPagesForMuz 29
ENDIF ENDIF
; ;
@ -37,16 +37,16 @@ Slot BYTE #FF ; PAGE OF SPRITE
Address WORD #C000 ; ADDRESS OF SPRITE Address WORD #C000 ; ADDRESS OF SPRITE
Height BYTE #78 ; ¢ëá®â  Height BYTE #78 ; ¢ëá®â 
Width BYTE #80 ; è¨à¨­  Width BYTE #80 ; è¨à¨­ 
X WORD 0000 ; ª®®à¤¨­ â  «¥¢®£® á⮫¡æ  á¯à ©â  ­  íªà ­¥ 0..(319-width) X WORD 0000 ; ª®®à¤¨­ â  «¥¢®£® á⮫¡æ  á¯à ©â  ­  íªà ­¥ 0..(319-width)
Y BYTE #50 ; ª®®à¤¨­ â  ¢¥àå­¥© áâப¨ á¯à ©â  ­  íªà ­¥ 0..(255-Height) Y BYTE #50 ; ª®®à¤¨­ â  ¢¥àå­¥© áâப¨ á¯à ©â  ­  íªà ­¥ 0..(255-Height)
Attribute BYTE #5C ; bit0 == 1 - ¬¥âª  ¯®á«¥¤­¥£® á¯à ©â  ¢ ᯨ᪥,   â ª íâ® £à ä¨ç¥áª ï áâà ­¨æ  á ¯®¤à¥¦¨¬ ¬¨ § ¯¨á¨ Attribute BYTE #5C ; bit0 == 1 - ¬¥âª  ¯®á«¥¤­¥£® á¯à ©â  ¢ ᯨ᪥,   â ª íâ® £à ä¨ç¥áª ï áâà ­¨æ  á ¯®¤à¥¦¨¬ ¬¨ § ¯¨á¨
ENDS ENDS
; ;
;-------------------------[Standart EQU section]------------------------ ;-------------------------[Standart EQU section]------------------------
org_addr EQU #8000+CLP_Buffer org_addr EQU #8000+CLP_Buffer
code_addr EQU START code_addr EQU START
stack_point EQU #BFFF stack_point EQU #BFFF
program_start EQU START program_start EQU START
Loader_length EQU 0 Loader_length EQU 0
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
@ -64,12 +64,12 @@ BackPlane:
.Height EQU 223 .Height EQU 223
.Width EQU 1102 .Width EQU 1102
.OffsetY EQU 0 .OffsetY EQU 0
.Scroll.Step EQU 1 .Scroll.Step EQU 1
.Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2) .Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2)
.PalSize EQU 64*4 .PalSize EQU 64*4
.PalOffset EQU 0*4 .PalOffset EQU 0*4
.RGBoffset EQU 0 ; or #436 if with BMP header and palette .RGBoffset EQU 0 ; or #436 if with BMP header and palette
.FIllColorNum EQU 4 ; ­®¬¥à æ¢¥â  ¢ ¯ «¨âॠª à⨭ª¨ ¤«ï § «¨¢ª¨ ᢥàåã ¨ á­¨§ã .FIllColorNum EQU 4 ; ­®¬¥à æ¢¥â  ¢ ¯ «¨âॠª à⨭ª¨ ¤«ï § «¨¢ª¨ ᢥàåã ¨ á­¨§ã
.SizeBytes EQU BackPlane.Height * BackPlane.Width .SizeBytes EQU BackPlane.Height * BackPlane.Width
.SizePages EQU BackPlane.SizeBytes/#4000 + (((BackPlane.SizeBytes mod #4000) != 0) * -1) .SizePages EQU BackPlane.SizeBytes/#4000 + (((BackPlane.SizeBytes mod #4000) != 0) * -1)
@ -78,44 +78,40 @@ BackPlane:
.Height EQU 200 .Height EQU 200
.Width EQU 520 .Width EQU 520
.OffsetY EQU 23 .OffsetY EQU 23
.Scroll.Step EQU 1 .Scroll.Step EQU 1
.Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2) .Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2)
.PalSize EQU 64*4 .PalSize EQU 64*4
.PalOffset EQU 0*4 .PalOffset EQU 0*4
.RGBoffset EQU 0 ; or #436 if with BMP header and palette .RGBoffset EQU 0 ; or #436 if with BMP header and palette
.FIllColorNum EQU 63 ; ­®¬¥à æ¢¥â  ¢ ¯ «¨âॠª à⨭ª¨ ¤«ï § «¨¢ª¨ ᢥàåã ¨ á­¨§ã .FIllColorNum EQU 63 ; ­®¬¥à æ¢¥â  ¢ ¯ «¨âॠª à⨭ª¨ ¤«ï § «¨¢ª¨ ᢥàåã ¨ á­¨§ã
.SizeBytes EQU BackPlane.Height * BackPlane.Width .SizeBytes EQU BackPlane.Height * BackPlane.Width
.SizePages EQU BackPlane.SizeBytes/#4000 + (((BackPlane.SizeBytes mod #4000) != 0) * -1) .SizePages EQU BackPlane.SizeBytes/#4000 + (((BackPlane.SizeBytes mod #4000) != 0) * -1)
ENDIF ENDIF
DISPLAY "Backplane size = ",/H,BackPlane.SizeBytes, ", pages - ",BackPlane.SizePages," (",#4000 * BackPlane.SizePages," bytes)" DISPLAY "Backplane size = ",/H,BackPlane.SizeBytes, ", pages - ",BackPlane.SizePages," (",#4000 * BackPlane.SizePages," bytes)"
RaidenSprite: RaidenSprite:
.PalOffset EQU 128*4 .PalOffset EQU 128*4
.PalSize EQU 64*4 .PalSize EQU 64*4
VARS EQU #9000 VARS EQU #9000
SPRITE_OLD2 EQU VARS SPRITE_OLD2 EQU VARS
SPRITE_OLD1 EQU VARS+2 SPRITE_OLD1 EQU VARS+2
SPRITE_NEW EQU VARS+4 SPRITE_NEW EQU VARS+4
SPEED_Y EQU VARS+16 SPEED_Y EQU VARS+16
SPEED_X EQU VARS+17 SPEED_X EQU VARS+17
RAMD_1 EQU VARS+18 RAMD_1 EQU VARS+18
DAT_SPR0 EQU VARS+#100 DAT_SPR0 EQU VARS+#100
DAT_SPR1 EQU VARS+#200 DAT_SPR1 EQU VARS+#200
DAT_SPR2 EQU VARS+#300 DAT_SPR2 EQU VARS+#300
IM2_Handler EQU #88FF IM2_Handler EQU #88FF
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; ;
INCLUDE 'Shared_Includes/constants/EXE_Header.z80' INCLUDE 'Shared_Includes/constants/EXE_Header.z80'
ORG org_addr ORG org_addr
; ORG #100 START: ld c,Dss.GetVMod
; .PHASE #8000
START:
ld c,Dss.GetVMod
rst ToDSS rst ToDSS
jr nc,1F jr nc,1F
ld a,3 ; ¥á«¨ ®è¨¡ª , â® áâ ¢¨¬ ¤¥ä®«â­ë¥ §­ ç¥­¨ï ०¨¬  ¨ ­®¬¥à  íªà ­  ld a,3 ; ¥á«¨ ®è¨¡ª , â® áâ ¢¨¬ ¤¥ä®«â­ë¥ §­ ç¥­¨ï ०¨¬  ¨ ­®¬¥à  íªà ­ 
@ -348,8 +344,7 @@ NEXT_STEP:
; LD C,#F3 ; LD C,#F3
; RST ToBIOS ; RST ToBIOS
BEGIN: BEGIN: DI
DI
LD SP,#BFFF LD SP,#BFFF
@ -423,14 +418,14 @@ BEGIN:
ld a,#9A ld a,#9A
ENDIF ENDIF
ELSE ; [ 2 ] -----< ELSE ; [ 2 ] -----<
IF MUSIC_22khz IF MUSIC_22khz
ld a,#9B ld a,#9B
ELSE ELSE
ld a,#9A ld a,#9A
ENDIF ENDIF
ENDIF ; [ . ] -----< ENDIF ; [ . ] -----<
out (c),a out (c),a
CALL MUTE_CBL CALL MUTE_CBL
@ -478,11 +473,9 @@ LOOP_ALL:
; IFN MODE_CBL : EI : HALT : DI : ENDIF ; IFN MODE_CBL : EI : HALT : DI : ENDIF
; IF MODE_CBL ; IF MODE_CBL
halt_loop_repeat: halt_loop_repeat: HALT
HALT
halt_JP_address+1: JR halt_loop_repeat halt_JP_address+1: JR halt_loop_repeat
halt_loop_exit: halt_loop_exit:
; ENDIF ; ENDIF
in a,(RGMOD) in a,(RGMOD)
xor 1 xor 1
@ -530,7 +523,6 @@ begin_loop:
RET RET
SPRITE_DATA: SPRITE_DATA:
DB #FF ; PAGE_SPRITE DB #FF ; PAGE_SPRITE
dw #C000 ; ADRESS SPRITE dw #C000 ; ADRESS SPRITE
DB #78,#80 ; SIZE DB #78,#80 ; SIZE
@ -641,7 +633,6 @@ sprite_2load_loop2:
; ; WER_PLACE ; ; WER_PLACE
; ; ATRIBUTE ; ; ATRIBUTE
FON_LOAD: FON_LOAD:
IN A,(SLOT0) IN A,(SLOT0)
PUSH AF PUSH AF
IN A,(SLOT1) IN A,(SLOT1)
@ -717,7 +708,7 @@ FON_LOOP:
OUT (C),B OUT (C),B
LD C,SLOT3 LD C,SLOT3
OUT (C),L ; SLOT3 <-- SLOT0 <-- SYS_PAGE OUT (C),L ; SLOT3 <-- SLOT0 <-- SYS_PAGE
LD C,SLOT0 LD C,SLOT0
LD H,2 LD H,2
@ -805,8 +796,7 @@ loop_all_1:
JR NZ,NO_SCR1 JR NZ,NO_SCR1
LD BC,#4180 LD BC,#4180
NO_SCR1: NO_SCR1:
LD L,(IX+SPRITE_TBL.X) ; X coordinate
LD L,(IX+SPRITE_TBL.X) ; X coordinate
LD H,(IX+SPRITE_TBL.X+1) LD H,(IX+SPRITE_TBL.X+1)
add hl,bc add hl,bc
@ -931,7 +921,7 @@ NEXT_SPRITE: db #FF
; SND_P: DB #FF ; SND_P: DB #FF
;===============================================[v] ;===============================================[v]
IFN MODE_CBL IFN MODE_CBL
;=============================================== ;===============================================
/* ¤®¤¥« âì ­  áâ àë© ¢ à¨ ­â ¡¥§ ¯à¥à뢠­¨© /* ¤®¤¥« âì ­  áâ àë© ¢ à¨ ­â ¡¥§ ¯à¥à뢠­¨©
; old ; old
@ -1016,7 +1006,6 @@ NO_LD_SND:
*/ */
PlayMusic: PlayMusic:
LD A,2 LD A,2
OUT (BorderColor),A OUT (BorderColor),A
@ -1094,7 +1083,7 @@ NO_SNDP:
RETI RETI
;=============================================== ;===============================================
ELSE ELSE
;=============================================== ;===============================================
; ;
;=============================================== ;===============================================
@ -1107,7 +1096,7 @@ PlayMusic:
push de push de
push bc ; !TODO ®¯â¨¬¨§¨à®¢ âì push bc ; !TODO ®¯â¨¬¨§¨à®¢ âì
ld a,halt_loop_repeat-halt_JP_address-1 ; repeat loop ld a,halt_loop_repeat-halt_JP_address-1 ; repeat loop
ld (halt_JP_address),a ld (halt_JP_address),a
IN A,(SLOT1) IN A,(SLOT1)
@ -1681,31 +1670,4 @@ EXIT_MSG: DZ 'All done)))',13,10
;---[] ;---[]
; ;
ASSERT IM2_Handler>$, "The code leaks into the IM2 byte address!" ASSERT IM2_Handler>$, "The code leaks into the IM2 byte address!"
; ;
;
/*
EMM_FN7: ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã ¡«®ª  ¯® ¯à¥¤ë¤ã饬ã
LD A,page ; 䨧¨ç¥áª ï áâà ­¨æ  ¡«®ª 
LD C,0C7h ; ­®¬¥à ä㭪樨
CALL 3D13h ; NC -> A - á«¥¤ãîé ï 䨧¨ç¥áª ï áâà ­¨æ  ¡«®ª 
; A=FF - ¨­¤¨æ¨àã¥â ª®­¥æ ¡«®ª 
; CF -> ®è¨¡ª  ­®¬¥à  áâà ­¨æë
; ˆ­ä®à¬ æ¨ï ® à á¯à¥¤¥«¥­¨¨ ¯ ¬ï⨠åà ­¨âáï ¢ ¢¨¤¥ RAM Allocation Table,
; ¯®å®¦¥© ­  ¤¨áª®¢ë© FAT. <20>®í⮬㠭 å®¦¤¥­¨¥ 䨧¨ç¥áª®£® ­®¬¥à  á«¥¤ãî饩
; áâà ­¨æë ¯® ¯à¥¤ë¤ã饬ã 䨧¨ç¥áª®¬ã ­®¬¥à㠯நá室¨â §­ ç¨â¥«ì­® ¡ëáâ॥,
; 祬 ¯®¨áª ¯® 㢥«¨ç¥­­®¬ã ­  ¥¤¨­¨æã «®£¨ç¥áª®¬ã ­®¬¥àã.
LD A,page
D C,BIOS.GetMemPageNext
RST ToBIOS
EMM_FN4: ; ¯®«ãç¨âì 䨧¨ç¥áª¨© ­®¬¥à áâà ­¨æë ¨§ ¡«®ª 
LD A,id_blk ; ¨¤¥­â¨ä¨ª â®à ¡«®ª 
LD B,page ; «®£¨ç¥áª ï áâà ­¨æ  ¢ ¡«®ª¥
LD C,0C4h ; ­®¬¥à ä㭪樨
CALL 3D13h ; NC -> € - 䨧¨ç¥áª¨© ­®¬¥à áâà ­¨æë
; CF -> €=0 - ­¥â â ª®£® ¡«®ª , A=FF - ª®­¥æ ¡«®ª 
*/

@ -1 +1 @@
Subproject commit 21c7eb690adb62e35c41fdcda76dc3bf97f369b4 Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3