diff --git a/MK_DEMO.ASM b/MK_DEMO.ASM index a824821..c674615 100644 --- a/MK_DEMO.ASM +++ b/MK_DEMO.ASM @@ -8,13 +8,13 @@ DEFINE MUSIC_22khz 1 ENDIF IF MUSIC_22khz -; ; #5944x128 blocks for play - DEFINE _memPagesForMuz 179 - DEFINE _ramDiskNumForMuz 3 - DEFINE _lastPageMuzOffset #5E00 + ; #5944x128 blocks for play + DEFINE _memPagesForMuz 179 + DEFINE _ramDiskNumForMuz 3 + DEFINE _lastPageMuzOffset #5E00 ELSE - DEFINE _memPagesForMuz 29 + DEFINE _memPagesForMuz 29 ENDIF ; @@ -37,16 +37,16 @@ Slot BYTE #FF ; PAGE OF SPRITE Address WORD #C000 ; ADDRESS OF SPRITE Height BYTE #78 ; высота Width BYTE #80 ; ширина -X WORD 0000 ; координата левого столбца спрайта на экране 0..(319-width) -Y BYTE #50 ; координата верхней строки спрайта на экране 0..(255-Height) +X WORD 0000 ; координата левого столбца спрайта на экране 0..(319-width) +Y BYTE #50 ; координата верхней строки спрайта на экране 0..(255-Height) Attribute BYTE #5C ; bit0 == 1 - метка последнего спрайта в списке, а так это графическая страница с подрежимами записи ENDS ; ;-------------------------[Standart EQU section]------------------------ -org_addr EQU #8000+CLP_Buffer -code_addr EQU START -stack_point EQU #BFFF +org_addr EQU #8000+CLP_Buffer +code_addr EQU START +stack_point EQU #BFFF program_start EQU START Loader_length EQU 0 ;----------------------------------------------------------------------- @@ -64,12 +64,12 @@ BackPlane: .Height EQU 223 .Width EQU 1102 .OffsetY EQU 0 -.Scroll.Step EQU 1 -.Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2) +.Scroll.Step EQU 1 +.Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2) .PalSize EQU 64*4 .PalOffset EQU 0*4 -.RGBoffset EQU 0 ; or #436 if with BMP header and palette -.FIllColorNum EQU 4 ; номер цвета в палитре картинки для заливки сверху и снизу +.RGBoffset EQU 0 ; or #436 if with BMP header and palette +.FIllColorNum EQU 4 ; номер цвета в палитре картинки для заливки сверху и снизу .SizeBytes EQU BackPlane.Height * BackPlane.Width .SizePages EQU BackPlane.SizeBytes/#4000 + (((BackPlane.SizeBytes mod #4000) != 0) * -1) @@ -78,44 +78,40 @@ BackPlane: .Height EQU 200 .Width EQU 520 .OffsetY EQU 23 -.Scroll.Step EQU 1 -.Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2) +.Scroll.Step EQU 1 +.Scroll.Width EQU 2*(BackPlane.Width/2 - ScreenSize.X/2) .PalSize EQU 64*4 .PalOffset EQU 0*4 -.RGBoffset EQU 0 ; or #436 if with BMP header and palette -.FIllColorNum EQU 63 ; номер цвета в палитре картинки для заливки сверху и снизу +.RGBoffset EQU 0 ; or #436 if with BMP header and palette +.FIllColorNum EQU 63 ; номер цвета в палитре картинки для заливки сверху и снизу .SizeBytes EQU BackPlane.Height * BackPlane.Width .SizePages EQU BackPlane.SizeBytes/#4000 + (((BackPlane.SizeBytes mod #4000) != 0) * -1) 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: .PalOffset EQU 128*4 .PalSize EQU 64*4 -VARS EQU #9000 -SPRITE_OLD2 EQU VARS -SPRITE_OLD1 EQU VARS+2 -SPRITE_NEW EQU VARS+4 -SPEED_Y EQU VARS+16 -SPEED_X EQU VARS+17 -RAMD_1 EQU VARS+18 -DAT_SPR0 EQU VARS+#100 -DAT_SPR1 EQU VARS+#200 -DAT_SPR2 EQU VARS+#300 +VARS EQU #9000 +SPRITE_OLD2 EQU VARS +SPRITE_OLD1 EQU VARS+2 +SPRITE_NEW EQU VARS+4 +SPEED_Y EQU VARS+16 +SPEED_X EQU VARS+17 +RAMD_1 EQU VARS+18 +DAT_SPR0 EQU VARS+#100 +DAT_SPR1 EQU VARS+#200 +DAT_SPR2 EQU VARS+#300 -IM2_Handler EQU #88FF +IM2_Handler EQU #88FF ;----------------------------------------------------------------------- ; INCLUDE 'Shared_Includes/constants/EXE_Header.z80' ORG org_addr - ; ORG #100 - ; .PHASE #8000 - -START: - ld c,Dss.GetVMod +START: ld c,Dss.GetVMod rst ToDSS jr nc,1F ld a,3 ; если ошибка, то ставим дефолтные значения режима и номера экрана @@ -348,8 +344,7 @@ NEXT_STEP: ; LD C,#F3 ; RST ToBIOS -BEGIN: - DI +BEGIN: DI LD SP,#BFFF @@ -423,14 +418,14 @@ BEGIN: ld a,#9A ENDIF - ELSE ; [ 2 ] -----< + ELSE ; [ 2 ] -----< IF MUSIC_22khz ld a,#9B ELSE ld a,#9A ENDIF - ENDIF ; [ . ] -----< + ENDIF ; [ . ] -----< out (c),a CALL MUTE_CBL @@ -478,11 +473,9 @@ LOOP_ALL: ; IFN MODE_CBL : EI : HALT : DI : ENDIF ; IF MODE_CBL -halt_loop_repeat: - HALT +halt_loop_repeat: HALT halt_JP_address+1: JR halt_loop_repeat halt_loop_exit: - ; ENDIF in a,(RGMOD) xor 1 @@ -530,7 +523,6 @@ begin_loop: RET SPRITE_DATA: - DB #FF ; PAGE_SPRITE dw #C000 ; ADRESS SPRITE DB #78,#80 ; SIZE @@ -641,7 +633,6 @@ sprite_2load_loop2: ; ; WER_PLACE ; ; ATRIBUTE FON_LOAD: - IN A,(SLOT0) PUSH AF IN A,(SLOT1) @@ -717,7 +708,7 @@ FON_LOOP: OUT (C),B LD C,SLOT3 - OUT (C),L ; SLOT3 <-- SLOT0 <-- SYS_PAGE + OUT (C),L ; SLOT3 <-- SLOT0 <-- SYS_PAGE LD C,SLOT0 LD H,2 @@ -805,8 +796,7 @@ loop_all_1: JR NZ,NO_SCR1 LD BC,#4180 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) add hl,bc @@ -931,7 +921,7 @@ NEXT_SPRITE: db #FF ; SND_P: DB #FF ;===============================================[v] - IFN MODE_CBL + IFN MODE_CBL ;=============================================== /* доделать на старый вариант без прерываний ; old @@ -1016,7 +1006,6 @@ NO_LD_SND: */ PlayMusic: - LD A,2 OUT (BorderColor),A @@ -1094,7 +1083,7 @@ NO_SNDP: RETI ;=============================================== - ELSE + ELSE ;=============================================== ; ;=============================================== @@ -1107,7 +1096,7 @@ PlayMusic: push de 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 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!" -; -; -/* - -EMM_FN7: ; получить следующую страницу блока по предыдущему -LD A,page ; физическая страница блока -LD C,0C7h ; номер функции -CALL 3D13h ; NC -> A - следующая физическая страница блока - ; A=FF - индицирует конец блока - ; CF -> ошибка номера страницы -; Информация о распределении памяти хранится в виде RAM Allocation Table, -; похожей на дисковый FAT. Поэтому нахождение физического номера следующей -; страницы по предыдущему физическому номеру происходит значительно быстрее, -; чем поиск по увеличенному на единицу логическому номеру. - - 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 - конец блока -*/ - - +; \ No newline at end of file diff --git a/Shared_Includes b/Shared_Includes index 21c7eb6..a6dee8e 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 21c7eb690adb62e35c41fdcda76dc3bf97f369b4 +Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3