Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EQU $ASAM.PASS.ERROR=2
- Include "..\iorqts.inc"
- Include "..\iorq_m.az8"
- Include "..\tslab.az8"
- Include "lvgame.ini" ;API OBJECT GFX
- .EQUALLOC √
- EQU $
- ORG $+@.0
- ..
- .PUSHA.HALF
- PUSH HL DE BC AF
- ..
- .POPA.HALF
- POP AF BC DE AF
- ..
- .MAC_LOAD_COLOR =RGB(,,)√
- LD @.0, @.3*1 + @.2*32 + @.1*1024
- ..
- .DW RGB(,,)√
- DW @.2*1 + @.1*32 + @.0*1024
- ..
- ORG PAL_FREE;0
- PAL_TILE EQUALLOC 10H
- ;PAL_SPRT EQUALLOC 10H
- ;PAL_KLUB EQUALLOC 10H
- ;PAL_CHAR EQUALLOC 10H
- PAL_BORDER EQU PAL_SPRT
- PAL_TILE_76 EQU LOW(PAL_TILE/64)
- PAL_TILE_54 EQU LOW(LOW(PAL_TILE*4)/64)
- ;PAGES CONFIG
- ORG PAGE_FREE;08H
- TIL_PAGE EQUALLOC 8 ;TILES PAGES
- T0G_PAGE EQUALLOC 8 ;TILE-0 GFX PAGE
- T1G_PAGE EQUALLOC 8 ;TILE-1 GFX PAGE
- ;PAGE_SPG EQUALLOC 8 ;SPRITE PAGE
- VID_PAGE EQUALLOC 8 ;GRAPHICS PAGE FOR 16C MODE
- MAP_PAGE EQUALLOC 8
- PR0_PAGE EQUALLOC 8
- ORG IORQ.DEMO
- GAME.START EQU $
- EI
- HALT
- IORQTS.MAC.PAL_ON
- IORQTS.MAC.BORDER PAL_BORDER
- MAC_LOAD_COLOR HL=RGB( 8, 0, 0)
- LD (PAL_BORDER*2),HL
- ; XOR A
- ; CALL IORQTS.RAMPage3
- LD A,TSL.SYSCFG.14_MHZ+TSL.SYSCFG.CACHE
- CALL IORQTS.SysConfig
- LD A,TSL.VIDCFG.360x288+TSL.VIDCFG.16C+TSL.VIDCFG.NOGFX;+TSL.VIDCFG.TEXT;+TSL.VIDCFG.16C+TSL.VIDCFG.NOGFX
- CALL IORQTS.VConfig
- XOR A;+TSL.SEN;TSL.T0EN;+TSL.T0ZEN
- CALL IORQTS.TSConfig
- LD A,0 + LOW(PAL_SPRT/16) + PAL_TILE_76*16;LOW(PAL_CHAR/64)*64 ;+ LOW(PAL_LINUX/64)*64 ;11110000B
- CALL IORQTS.PalSel
- CALL InitEF
- LD A,PAGE_SPG
- CALL IORQTS.SGPage
- LD A,TIL_PAGE
- CALL IORQTS.TMPage
- LD A,T0G_PAGE
- CALL IORQTS.T0GPage
- LD A,MAP_PAGE + 1
- CALL IORQTS.RAMPage2
- LD A,MAP_PAGE
- CALL IORQTS.RAMPage3
- LD HL,4
- LD DE,4-24
- CALL IORQTS.T0OFS
- LD HL,EFFECT
- LD (IORQ.EFFECT),HL
- M1 XOR A
- CALL WaitFrameGame
- CALL SwapShadowMapPage
- LD A,4
- CALL WaitFrameGame
- CALL MapSTP0
- CALL MapSTP1
- LD A,7
- CALL WaitFrameGame
- CALL WaitFinishShowerFrame
- CALL OneStepAnimation
- CALL OneStepUpdateTileFromMAP
- JR M1
- WaitFinishShowerFrame:
- LD HL,FINISH_FRAME_FLAG
- INC (HL)
- WFISFx1 LD A,(HL)
- OR A
- RET Z
- HALT
- JR WFISFx1
- ; IN: A=FRAME NUMBER
- ;OUT:ZF=RESULT COMPORATOR
- CheckFrameGame:
- PUSH HL
- LD HL,GAMEFRAME
- CP (HL)
- POP HL
- RET
- ; IN: A=FRAME NUMBER
- WaitFrameGame:
- CALL CheckFrameGame
- RET Z
- CALL IORQTS.WaitFrame
- JR WaitFrameGame
- EFCOUNTER DB 0
- EFFECT: LD HL,EFCOUNTER
- INC (HL)
- GAMEFRAME EQU $+1
- LD A,7
- INC A
- AND 7
- LD (GAMEFRAME),A
- PUSH AF
- LD BC,1700H
- CALL CreateOffsetTBL
- CALL OneFrameMovmentMAP_A
- CALL INT_PER_FIRST
- POP AF
- CALL Z,ZerroFrameUpdater
- CALL OneFrameMovmentMAP_B
- CALL IORQTS.RAMPage1_PUSH
- CALL IORQTS.RAMPage1_DEF
- CALL IORQTS.RAMPage2_DEF
- CALL IORQTS.RAMPage3_DEF
- CALL IORQTS.RAMPage1_POP
- RET
- ZerroFrameUpdater:
- RET
- INT_PER_FIRST:
- LD A,0 + TSL.SEN + TSL.T0EN;+TSL.T0ZEN + TSL.T1EN+TSL.T1ZEN; +
- CALL IORQTS.TSConfig
- LD DE,PER_Y_FIRST ;OFFSET POINTER FOR START SCREEN WINDOW
- LD (IPERx1+1),DE
- CALL IORQTS.SetIntY
- LD HL,INT_PER_0
- CALL SetNewIntVector
- LD HL,ADDR_SPRT_TILE;SP_TEST
- CALL IPERx0
- RET
- INT_PER_0:
- PUSH HL DE BC AF
- CALL IPERx4
- IPERx1 LD HL,0
- LD DE,PER_Y_STEP
- ADD HL,DE
- LD (IPERx1+1),HL
- PUSH HL
- LD DE,PER_Y_LAST
- AND A
- SBC HL,DE
- POP DE
- JR NC,IPERx2
- CALL IORQTS.SetIntY
- IPERx3 POP AF BC DE HL
- EI
- RET
- FINISH_FRAME_FLAG DB 0
- IPERx2 LD DE,PER_Y_LAST
- CALL IORQTS.SetIntY
- LD HL,INT_PER_1
- CALL SetNewIntVector
- XOR A
- LD (FINISH_FRAME_FLAG),A
- JP IPERx3
- INT_PER_1:
- PUSH HL DE BC AF
- LD A,0 + TSL.T0EN; + TSL.SEN; + TSL.T0EN+TSL.T0ZEN + TSL.T1EN+TSL.T1ZEN; +
- CALL IORQTS.TSConfig
- LD DE,0
- CALL IORQTS.SetIntY
- CALL SetSystemIntVector
- JP IPERx3
- IPERx4: LD HL,ADDR_SPRT_TILE;SP_TEST
- IPERx0: CALL IORQTS.DMA_WAIT
- CALL IORQTS.DMA_ALL_REG_PUSH
- PUSH HL
- LD A,PAGE_SPRT_TILE;IORQTS.RAMPage1_DEFSYS;IORQTS.PAGE
- CALL IORQTS.DMA_SET_FROM
- LD HL,0200H
- CALL IORQTS.DMA_SET_TO
- LD A,TSL.DMAMD.RAM_SFL
- LD DE,PER_S_SIZ*6/2-1
- CALL IORQTS.DMA_START
- POP HL
- LD DE,PER_S_STP*6
- ADD HL,DE
- LD (IPERx4+1),HL
- LD DE,0200H+PER_S_SIZ*6
- CALL IORQTS.PackGenerateSprite_FinishDE
- CALL IORQTS.DMA_WAIT
- CALL IORQTS.DMA_ALL_REG_POP
- RET
- OneStepAnimation:
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- LD A,PAGE_ANIMATION ;PAGE FOR TABLE RECORDS
- CALL IORQTS.RAMPage3
- LD A,PAGE_SPRT_TILE ;PAGE FOR CODE ANIMATION
- CALL IORQTS.RAMPage2
- CALL ADDR_API_ANIMATION
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- RET
- OneStepUpdateTileFromMAP:
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- CALL GetShadowMapPage
- CALL IORQTS.RAMPage3
- LD A,PAGE_SPRT_TILE ;PAGE FOR CODE ANIMATION
- CALL IORQTS.RAMPage2
- LD BC,0C000H ;POINTER TO MAP DATA
- CALL ADDR_API_SPRITE_GEN
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- RET
- OneFrameMovmentMAP_A:
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- CALL GetShadowMapPageShower
- CALL IORQTS.RAMPage3
- LD A,PAGE_SPRT_TILE ;PAGE FOR CODE ANIMATION
- CALL IORQTS.RAMPage2
- LD D,0
- LD B,0
- OFR_Ax1 LD HL,0C000H ;POINTER TO MAP DATA
- LD A,HIGH(ADDR_OFST_TBL) ;HIGH OF TABLE FOR OFFSET ADDR_OFST_TBL
- CALL ADDR_API_MOVMENTA
- LD (OFR_Bx1+1),HL
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- RET
- OneFrameMovmentMAP_B:
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- CALL GetShadowMapPageShower
- CALL IORQTS.RAMPage3
- LD A,PAGE_SPRT_TILE ;PAGE FOR CODE ANIMATION
- CALL IORQTS.RAMPage2
- LD D,0
- LD B,0
- OFR_Bx1 LD HL,0C000H ;POINTER TO MAP DATA
- LD A,HIGH(ADDR_OFST_TBL) ;HIGH OF TABLE FOR OFFSET ADDR_OFST_TBL
- CALL ADDR_API_MOVMENTB
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- RET
- ; IN: A=FRAME 0..7 !?!?!?
- ; C=X-OFS 0..23
- ; B=Y-OFS 0..23
- CreateOffsetTBL:
- AND 00000111B
- LD E,A
- ADD A,A
- ADD A,E
- LD E,A
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- LD A,PAGE_SPRT_TILE ;PAGE FOR CODE ANIMATION
- CALL IORQTS.RAMPage2
- LD A,SPR_TBL_XYOFS
- SUB C
- LD C,A
- LD A,SPR_TBL_XYOFS
- SUB B
- LD B,A
- LD L,C
- LD H,B
- LD (ADDR_OFST_TBL + MAP_FLAG_NONE ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_NONE ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_NOSPACE ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_NOSPACE ),HL
- LD A,B
- SUB E
- LD H,A
- LD (ADDR_OFST_TBL + MAP_FLAG_UP ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_UP ),HL
- LD A,B
- ADD A,E
- LD H,A
- LD (ADDR_OFST_TBL + MAP_FLAG_DOWN ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_DOWN ),HL
- LD H,B
- LD A,C
- SUB E
- LD L,A
- LD (ADDR_OFST_TBL + MAP_FLAG_LEFT ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_LEFT ),HL
- LD A,C
- ADD A,E
- LD L,A
- LD (ADDR_OFST_TBL + MAP_FLAG_RIGHT ),HL
- LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT ),HL
- ;MAP_FLAG_UP EQU 00100000B
- ;MAP_FLAG_DOWN EQU 00110111B
- ;MAP_FLAG_LEFT EQU 01010000B
- ;MAP_FLAG_RIGHT EQU 01100011B
- ;MAP_FLAG_NOSPACE EQU 00000011B
- ;MAP_FLAG_SLIDING EQU 10000000B
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- RET
- GetShadowMapPageShower:
- MAP_PAGE_SHOWER EQU $+1
- LD A,MAP_PAGE + 2
- RET
- GetShadowMapPage:
- MAP_PAGE_SHADOW EQU $+1
- LD A,MAP_PAGE + 1
- RET
- SwapShadowMapPage:
- LD A,(MAP_PAGE_SHOWER)
- PUSH AF
- LD A,(MAP_PAGE_SHADOW)
- LD (MAP_PAGE_SHOWER),A
- POP AF
- LD (MAP_PAGE_SHADOW),A
- RET
- CreateMapShadow:
- LD A,MAP_PAGE
- LD HL,0C000H
- CALL IORQTS.DMA_SET_FROM
- CALL GetShadowMapPage
- CALL IORQTS.DMA_SET_TO
- LD A,TSL.DMAMD.RAM_RAM + TSL.DMAMD.A256S + TSL.DMAMD.A256D
- LD DE,MAP_XS-1 + 256*(MAP_YS-1)
- CALL IORQTS.DMA_START
- CALL IORQTS.DMA_WAIT
- RET
- ALIGN 512
- ;MAP Gravity Step DROP OBJECTS
- MapSTP0:
- CALL CreateMapShadow
- CALL IORQTS.RAMPage1_PUSH
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- LD (MST0xSP+1),SP
- CALL GetShadowMapPage
- CALL IORQTS.RAMPage1
- LD A,PR0_PAGE + 0
- CALL IORQTS.RAMPage2
- INC A
- CALL IORQTS.RAMPage3
- CALL GetShadowMapPage
- CALL IORQTS.DMA_SET_FROM_PAGE
- LD A,IORQTS.PAGE
- CALL IORQTS.DMA_SET_TO_PAGE
- LD H,040H + MAP_YS-2;07EH
- LD XL,LOW((MAP_YS-1)/2)
- MST0x1 CALL MST_PROC_LINE_0A
- DEC H
- DEC H
- CALL MST_PROC_LINE_0B
- DEC H
- DEC H
- DEC XL
- JP NZ,MST0x1
- CALL MST_PROC_LINE_0A
- MST0xSP LD SP,0
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- CALL IORQTS.RAMPage1_POP
- RET
- ;MAP Gravity Step DROP OBJECTS
- MapSTP1:
- CALL IORQTS.RAMPage1_PUSH
- CALL IORQTS.RAMPage2_PUSH
- CALL IORQTS.RAMPage3_PUSH
- LD (MST1xSP+1),SP
- LD A,MAP_PAGE
- CALL IORQTS.RAMPage1
- LD A,PR0_PAGE + 2
- CALL IORQTS.RAMPage2
- INC A
- CALL IORQTS.RAMPage3
- CALL GetShadowMapPage
- CALL IORQTS.DMA_SET_FROM_PAGE
- LD A,IORQTS.PAGE
- CALL IORQTS.DMA_SET_TO_PAGE
- LD H,040H
- LD XL,LOW((MAP_YS-1)/2)
- MST1x1 ;LD SP,MSTxSTACK+2
- CALL MST_PROC_LINE_1A
- INC H
- CALL MST_PROC_LINE_1B
- INC H
- DEC XL
- JP NZ,MST1x1
- CALL MST_PROC_LINE_1A
- MST1xSP LD SP,0
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.RAMPage2_POP
- CALL IORQTS.RAMPage1_POP
- RET
- .MAC_MST_PROC_LINE √
- XOR A
- LD L,2
- LD (IORQTS.DMASAddrL_TMP),HL
- LD BC,TSL.DMASAddrL
- OUT (C),L
- INC B
- OUT (C),H
- LD DE,@.0
- LD (IORQTS.DMADAddrL_TMP),DE
- LD B,HIGH(TSL.DMADAddrL)
- OUT (C),E
- INC B
- OUT (C),D
- LD B,HIGH(TSL.DMALen)
- LD E,MAP_XS-1-1
- LD (IORQTS.DMALen_TMP),DE
- OUT (C),E
- LD B,HIGH(TSL.DMANum)
- LD L,A
- LD (IORQTS.DMANum_TMP),A
- OUT (C),A
- LD B,HIGH(TSL.DMACtrl)
- LD E,TSL.DMAMD.RAM_RAM
- OUT (C),E
- @M1 IN A,(C)
- RLCA
- JR C,@M1
- POP BC
- LD (@.0+MAP_XS*2-2),BC
- LD SP,@.0
- ..
- ;----------------===
- MST_PROC_LINE_0A:
- MAC_MST_PROC_LINE MSTxSTACK_A
- INC H
- RET
- MST_PROC_LINE_0B:
- MAC_MST_PROC_LINE MSTxSTACK_B
- INC H
- RET
- MST_PROC_LINE_1A:
- MAC_MST_PROC_LINE MSTxSTACK_B
- RET
- MST_PROC_LINE_1B:
- MAC_MST_PROC_LINE MSTxSTACK_A
- RET
- DS 128
- ALIGN 512
- MSTxSTACK_A EQU $ ;STACK FOR CASH TOKEN A
- DS MAP_XS*2
- ORG MSTxSTACK_A+512
- MSTxSTACK_B EQU $ ;STACK FOR CASH TOKEN B
- DS MAP_XS*2
- ;45x36 -> 22x18
- ;MAP_FLAG_SYS_NONE EQU 00000000B
- ;MAP_FLAG_SYS_GRAVITY EQU 00000001B
- ;MAP_FLAG_SYS_FREE2 EQU 00000010B
- ;MAP_FLAG_SYS_FREE3 EQU 00000011B
- ;MAP_FLAG_SYS_FREE4 EQU 00000100B
- ;MAP_FLAG_SYS_FREE5 EQU 00000101B
- ;MAP_FLAG_SYS_FREE6 EQU 00000110B
- ;MAP_FLAG_SYS_FREE7 EQU 00000111B
- ;MAP_FLAG_SYS_MASK EQU 00000111B
- ;00000000 80H
- ;││││││││ └┴─> HIGH BYTE OF OBJECT
- ;││││││││ 80 - SPACE
- ;││││││││ 81 - EARTH
- ;││││││││ 82 - BOULDER
- ;││││││││
- ;││││││││
- ;││││││││
- ;││││││││
- ;││││││││
- ;││││││││ FLAGS = 0 IF SPACE
- ;││││││││
- ;│││││││└────>
- ;││││││└─────>
- ;│││││└──────>
- ;││││└───────>
- ;│││
- ;││
- ;││
- ;││
- ;│└──────────>
- ;└───────────>
- ;
- ;
- ;
- ;00,80 - SPACE
- ;
- .MAC_P8_ADD_TBL √
- OBJ_@.0 DW @.0_SETUP
- DB @.0_SIZE
- DW @.0
- ..
- .MAC_P8_BEGIN √
- @.0 EQU $
- ..
- .MAC_P8_END √
- @.0_SIZE EQU $-@.0
- ..
- ;-----------------------------------------------------------------------------
- MAC_P8_BEGIN P8_NOP
- INC L ;4 NEXT OBJECT DOWN
- INC L ;4 NEXT OBJECT DOWN
- RET
- MAC_P8_END P8_NOP
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- P8_NOP_SETUP:
- RET
- ;-----------------------------------------------------------------------------
- ;HL = POINTER + GRAVITY OFFSET
- ;OBJECT GRAVITY
- MAC_P8_BEGIN P8_GRAVITY ;<----------------
- INC L ;4 NEXT OBJECT DOWN
- INC L ;4 NEXT OBJECT DOWN
- LD A,(HL) ;7
- OR A
- JP Z,P8Gx2 ;12.7 GO IF DOWN SPACE
- RLCA ;4 CHECK DOWN SLIDING OR SPACE
- RET NC ;10 RET IF CANT SLIDE
- INC L
- INC L
- LD A,(HL)
- DEC H
- OR (HL)
- JP NZ,P8Gx1 ;12.7 GO FOR LEFT DOWN SLIDNG
- ;MOVE RIGHT
- LD (HL),MAP_FLAG_NOSPACE
- DEC L
- DEC L
- LD A,(HL)
- OR MAP_FLAG_RIGHT ;MOVE RIGHT FLAG
- LD (HL),A
- INC H
- RET
- MAC_P8_END P8_GRAVITY ;<----------------
- P8Gx1 INC H
- LD A,L
- SUB 4
- LD L,A
- LD A,(HL)
- DEC H
- OR (HL)
- JR Z,P8Gx3
- INC L
- INC L
- INC H
- RET
- ;MOVE LEFT
- P8Gx3 LD (HL),MAP_FLAG_NOSPACE
- INC L
- INC L
- LD A,(HL)
- OR MAP_FLAG_LEFT ;MOVE LEFT FLAG
- LD (HL),A
- INC H
- RET
- ;DROP DOWN
- P8Gx2 DEC H
- LD A,(HL)
- OR MAP_FLAG_DOWN ;MOVE DOWN FLAG
- LD (HL),A
- INC H
- LD (HL),MAP_FLAG_NOSPACE ;CURRENT OBJECT NOT SPACE !!!
- RET
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- P8_GRAVITY_SETUP:
- RET
- ;-----------------------------------------------------------------------------
- ;HL = POINTER TO CURRENT MAP
- ;OBJECT GRAVITY
- MAC_P8_BEGIN E8_NOP ;<EXECHENGER------
- INC L
- INC L
- RET
- MAC_P8_END E8_NOP ;<----------------
- MAC_P8_BEGIN E8_SKIP ;<EXECHENGER------
- INC L
- INC L
- RET
- MAC_P8_END E8_SKIP ;<----------------
- MAC_P8_BEGIN E8_NOP_CHANG;<EXECHENGER------
- INC L
- INC L
- E8CHAx1 LD (HL),000H ;FLAG
- INC L
- E8CHAx2 LD (HL),000H ;OBJ
- DEC L
- RET
- MAC_P8_END E8_NOP_CHANG ;<----------------
- E8_SKIP_SETUP:
- RET
- E8_NOP_CHANG_SETUP:
- RET
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- E8_NOP_SETUP:
- RET Z
- LD HL,OBJ_E8_NOP_CHANG
- LD (E8CHAx2+1),A
- LD A,C
- LD (E8CHAx1+1),A
- RET
- ;-----------------------------------------------------------------------------
- MAC_P8_BEGIN E8_MOV_L ;<EXECHENGER------
- P8MOLx1 LD (HL),0 ;FLAG
- INC L
- P8MOLx2 LD (HL),0 ;OBJ
- INC L
- LD (HL),000H ;FLAG
- INC L
- LD (HL),080H ;OBJ
- DEC L
- RET
- MAC_P8_END E8_MOV_L ;<----------------
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- E8_MOV_L_SETUP:
- LD (P8MOLx2+1),A
- LD A,C;CALL E8_FLAG_SETUP;LD A,E
- LD (P8MOLx1+1),A
- RET
- ;-----------------------------------------------------------------------------
- MAC_P8_BEGIN E8_MOV_R ;<EXECHENGER------
- INC L
- INC L
- LD (HL),000H ;FLAG
- INC L
- LD (HL),080H ;OBJ
- INC L
- P8MORx1 LD (HL),0 ;FLAG
- INC L
- P8MORx2 LD (HL),0 ;OBJ
- DEC L
- DEC L
- RET
- MAC_P8_END E8_MOV_R ;<----------------
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- E8_MOV_R_SETUP:
- LD (P8MORx2+1),A
- LD A,C
- LD (P8MORx1+1),A
- RET
- ;-----------------------------------------------------------------------------
- MAC_P8_BEGIN E8_MOV_U ;<EXECHENGER------
- INC L
- INC L
- LD (HL),000H ;FLAG
- INC L
- LD (HL),080H ;OBJ
- DEC H
- P8MOUx2 LD (HL),0 ;OBJ
- DEC L
- P8MOUx1 LD (HL),0 ;FLAG
- INC H
- RET
- MAC_P8_END E8_MOV_U ;<----------------
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- E8_MOV_U_SETUP:
- LD (P8MOUx2+1),A
- LD A,C
- LD (P8MOUx1+1),A
- RET
- ;-----------------------------------------------------------------------------
- MAC_P8_BEGIN E8_MOV_D ;<EXECHENGER------
- INC L
- INC L
- LD (HL),000H ;FLAG
- INC L
- LD (HL),080H ;OBJ
- INC H
- P8MODx2 LD (HL),0 ;OBJ
- DEC L
- P8MODx1 LD (HL),0 ;FLAG
- DEC H
- RET
- MAC_P8_END E8_MOV_D ;<----------------
- ; IN:HL=P8_TBL
- ; DE=OBJECT VALUE
- ; A=EXCHANGER DATA
- E8_MOV_D_SETUP:
- LD (P8MODx2+1),A
- LD A,C
- LD (P8MODx1+1),A
- RET
- ;-----------------------------------------------------------------------------
- MAC_P8_BEGIN E8_RIGHT ;<EXECHENGER------
- MAC_P8_END E8_RIGHT ;<----------------
- ;-----------------------------------------------------------------------------
- P8_TBL EQU $
- MAC_P8_ADD_TBL P8_NOP
- MAC_P8_ADD_TBL E8_NOP
- MAC_P8_ADD_TBL E8_SKIP
- MAC_P8_ADD_TBL E8_NOP_CHANG
- MAC_P8_ADD_TBL P8_GRAVITY
- MAC_P8_ADD_TBL E8_MOV_U
- MAC_P8_ADD_TBL E8_MOV_D
- MAC_P8_ADD_TBL E8_MOV_L
- MAC_P8_ADD_TBL E8_MOV_R
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_SPACE
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_SKIP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_GRAVITY_NOP
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_GRAVITY
- PRC_OBJ_TBL_GRAVITY
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_GRAVITY ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_GRAVITY ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_MOV_U ;OFS + MAP_FLAG_UP
- DW OBJ_E8_MOV_D ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_MOV_L ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_MOV_R ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_MOV_U ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_MOV_D ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_MOV_L ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_MOV_R ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_BUTTERFLY
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_BOMBER
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_BIRD_HOR
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_BIRD_VERT
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_BIRD_HOR_FIRE
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_BULLET
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_MIRROR
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_RADIUS_BOMB
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_RADIUS_BUTTER
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW EXE_MAP_CHECK_NO
- PRC_OBJ_TBL_RADIUS_BOMBER
- ;OBJECT ;FLAGS
- DW OBJ_P8_NOP ;OFS + 0
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_P8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- DW OBJ_E8_SKIP ;OFS + 0
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_NOSPACE
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_RIGHT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_UP
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- DW OBJ_E8_NOP ;OFS + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- ; IN: A=OBJECT
- ;OUT:DE=OBJECT WITH FLAG
- GET_MAP_ELE_A_TO_DE:
- AND 01111111B
- LD D,A
- SET 7,D
- LD E,0
- RET Z
- PUSH HL
- LD H,HIGH(SLIDE_TBL)
- LD L,A
- LD A,(HL)
- OR A
- POP HL
- LD E,MAP_FLAG_SLIDING
- RET NZ
- LD E,MAP_FLAG_NOSPACE
- RET
- ; IN: A=OBJECT
- ;OUT:DE=OBJECT WITH FLAG
- GET_MAP_ELE_A_TO_BC:
- AND 01111111B
- LD B,A
- SET 7,B
- LD C,0
- RET Z
- PUSH HL
- LD H,HIGH(SLIDE_TBL)
- LD L,A
- LD A,(HL)
- OR A
- POP HL
- LD C,MAP_FLAG_SLIDING
- RET NZ
- LD C,MAP_FLAG_NOSPACE
- RET
- ; IN: A=OBJ
- ;OUT: A=OBJ EXCHANGE
- GET_MAP_EXCHANGE:
- PUSH HL
- LD H,HIGH(EXCHANGE_TBL)
- AND 01111111B
- LD L,A
- LD A,(HL)
- OR 080H
- POP HL
- RET
- ; IN:HL=POINTER TO PRC_OBJ_RBL
- ; E=FLAGS
- ; D=OBJECT
- EXE_MAP_ADD_ELEMENT:
- PUSH HL
- LD A,(HL)
- INC HL
- LD H,(HL)
- LD L,A
- LD A,D
- AND 01111111B
- OR 80H ;32768..49151
- LD D,A
- PUSH BC HL DE
- LD DE,EXMADx3+1
- LDI
- LDI
- POP DE
- LD A,D
- CALL GET_MAP_EXCHANGE
- CALL GET_MAP_ELE_A_TO_BC
- PUSH DE
- EX DE,HL
- AND A
- SBC HL,BC
- POP DE
- POP HL
- LD A,B
- ; LD (E8_CUR_CHANGE_OBJ),A ;SAVE TEMP CHANGE OBJECT
- EXMADx3 CALL 0 ;SETUP
- CALL EXMADxCOPY_OBJ_CODE
- POP BC
- POP HL
- INC HL
- INC HL
- RET
- PROC_GROUP_TBL:
- DW PRC_OBJ_TBL_SPACE ;000 Space
- DW PRC_OBJ_TBL_GRAVITY ;001 Ground
- DW PRC_OBJ_TBL_GRAVITY ;002 Boulder
- DW PRC_OBJ_TBL_GRAVITY ;003 Boulder Burned [1/4]
- DW PRC_OBJ_TBL_GRAVITY ;004 Boulder Burned [2/4]
- DW PRC_OBJ_TBL_GRAVITY ;005 Boulder Burned [3/4]
- DW PRC_OBJ_TBL_GRAVITY ;006 Boulder Burned [4/4]
- DW PRC_OBJ_TBL_GRAVITY ;007 Brick Wall-1
- DW PRC_OBJ_TBL_GRAVITY ;008 Brick Wall-2
- DW PRC_OBJ_TBL_GRAVITY ;009 Brick Wall-3
- DW PRC_OBJ_TBL_GRAVITY ;010 Brick Wall-4
- DW PRC_OBJ_TBL_GRAVITY ;011 Hard Wall-1
- DW PRC_OBJ_TBL_GRAVITY ;012 Hard Wall-2
- DW PRC_OBJ_TBL_GRAVITY ;013 Hard Wall-3
- DW PRC_OBJ_TBL_GRAVITY ;014 Hard Wall-4
- DW PRC_OBJ_TBL_GRAVITY ;015 Herro
- DW PRC_OBJ_TBL_GRAVITY ;016 Time Add
- DW PRC_OBJ_TBL_GRAVITY ;017 Life
- DW PRC_OBJ_TBL_GRAVITY ;018 Bomb
- DW PRC_OBJ_TBL_GRAVITY ;019 Explosion Bomb
- DW PRC_OBJ_TBL_GRAVITY ;020 Explosion To Space [1/4]
- DW PRC_OBJ_TBL_GRAVITY ;021 Explosion To Space [2/4]
- DW PRC_OBJ_TBL_GRAVITY ;022 Explosion To Space [3/4]
- DW PRC_OBJ_TBL_GRAVITY ;023 Explosion To Space [4/4]
- DW PRC_OBJ_TBL_GRAVITY ;024 Explosion Butterfly To Diamond [1/4]
- DW PRC_OBJ_TBL_GRAVITY ;025 Explosion Butterfly To Diamond [2/4]
- DW PRC_OBJ_TBL_GRAVITY ;026 Explosion Butterfly To Diamond [3/4]
- DW PRC_OBJ_TBL_GRAVITY ;027 Explosion Butterfly To Diamond [4/4]
- DW PRC_OBJ_TBL_GRAVITY ;028 Diamond
- DW PRC_OBJ_TBL_GRAVITY ;029 Key-1 Red
- DW PRC_OBJ_TBL_GRAVITY ;030 Key-2 Green
- DW PRC_OBJ_TBL_GRAVITY ;031 Key-3 Blue
- DW PRC_OBJ_TBL_GRAVITY ;032 Key-4 White
- DW PRC_OBJ_TBL_GRAVITY ;033 Door-1 Horrizontal (Red)
- DW PRC_OBJ_TBL_GRAVITY ;034 Door-2 Horrizontal (Green)
- DW PRC_OBJ_TBL_GRAVITY ;035 Door-3 Horrizontal (Blue)
- DW PRC_OBJ_TBL_GRAVITY ;036 Door-4 Horrizontal (White)
- DW PRC_OBJ_TBL_GRAVITY ;037 Door-1 Vertical (Red)
- DW PRC_OBJ_TBL_GRAVITY ;038 Door-2 Vertical (Green)
- DW PRC_OBJ_TBL_GRAVITY ;039 Door-3 Vertical (Blue)
- DW PRC_OBJ_TBL_GRAVITY ;040 Door-4 Vertical (White)
- DW PRC_OBJ_TBL_GRAVITY ;041 Opened Door-1 Horrizontal (Red)
- DW PRC_OBJ_TBL_GRAVITY ;042 Opened Door-2 Horrizontal (Green)
- DW PRC_OBJ_TBL_GRAVITY ;043 Opened Door-3 Horrizontal (Blue)
- DW PRC_OBJ_TBL_GRAVITY ;044 Opened Door-4 Horrizontal (White)
- DW PRC_OBJ_TBL_GRAVITY ;045 Opened Door-1 Vertical (Red)
- DW PRC_OBJ_TBL_GRAVITY ;046 Opened Door-2 Vertical (Green)
- DW PRC_OBJ_TBL_GRAVITY ;047 Opened Door-3 Vertical (Blue)
- DW PRC_OBJ_TBL_GRAVITY ;048 Opened Door-4 Vertical (White)
- DW PRC_OBJ_TBL_GRAVITY ;049 Fire
- DW PRC_OBJ_TBL_GRAVITY ;050 Bubble Of Water
- DW PRC_OBJ_TBL_GRAVITY ;051 Bubble Split [1/4]
- DW PRC_OBJ_TBL_GRAVITY ;052 Bubble Split [2/4]
- DW PRC_OBJ_TBL_GRAVITY ;053 Bubble Split [3/4]
- DW PRC_OBJ_TBL_GRAVITY ;054 Bubble Split [4/4]
- DW PRC_OBJ_TBL_GRAVITY ;055 Wall Exchanger Freezed
- DW PRC_OBJ_TBL_GRAVITY ;056 Wall Exchanger Actived
- DW PRC_OBJ_TBL_GRAVITY ;057 Coin
- DW PRC_OBJ_TBL_GRAVITY ;058 Exit-Door Closed
- DW PRC_OBJ_TBL_GRAVITY ;059 Exit-Door Opened
- DW PRC_OBJ_TBL_GRAVITY ;060 Gravity Up
- DW PRC_OBJ_TBL_GRAVITY ;061 Gravity Down
- DW PRC_OBJ_TBL_GRAVITY ;062 Gravity Left
- DW PRC_OBJ_TBL_GRAVITY ;063 Gravity Right
- DW PRC_OBJ_TBL_GRAVITY ;064 Teleport-1
- DW PRC_OBJ_TBL_GRAVITY ;065 Teleport-2
- DW PRC_OBJ_TBL_GRAVITY ;066 Teleport-3
- DW PRC_OBJ_TBL_GRAVITY ;067 Teleport-4
- DW PRC_OBJ_TBL_GRAVITY ;068 Teleport-5
- DW PRC_OBJ_TBL_GRAVITY ;069 Teleport-6
- DW PRC_OBJ_TBL_GRAVITY ;070 Teleport-7
- DW PRC_OBJ_TBL_GRAVITY ;071 Teleport-8
- DW PRC_OBJ_TBL_GRAVITY ;072 Slime-1
- DW PRC_OBJ_TBL_GRAVITY ;073 Slime-2
- DW PRC_OBJ_TBL_GRAVITY ;074 Slime-3
- DW PRC_OBJ_TBL_GRAVITY ;075 Slime-4
- DW PRC_OBJ_TBL_BUTTERFLY ;076 Butterfly
- DW PRC_OBJ_TBL_BOMBER ;077 Bomber
- DW PRC_OBJ_TBL_GRAVITY ;078 GoTo Right
- DW PRC_OBJ_TBL_GRAVITY ;079 GoTo Up
- DW PRC_OBJ_TBL_GRAVITY ;080 GoTo Left
- DW PRC_OBJ_TBL_GRAVITY ;081 GoTo Down
- DW PRC_OBJ_TBL_GRAVITY ;082 Gun Up
- DW PRC_OBJ_TBL_GRAVITY ;083 Gun Right
- DW PRC_OBJ_TBL_GRAVITY ;084 Gun Down
- DW PRC_OBJ_TBL_GRAVITY ;085 Gun Left
- DW PRC_OBJ_TBL_GRAVITY ;086 Gun-Rotated Up
- DW PRC_OBJ_TBL_GRAVITY ;087 Gun-Rotated Right
- DW PRC_OBJ_TBL_GRAVITY ;088 Gun-Rotated Down
- DW PRC_OBJ_TBL_GRAVITY ;089 Gun-Rotated Left
- DW PRC_OBJ_TBL_BIRD_HOR ;090 Bird Horrizontal Move
- DW PRC_OBJ_TBL_BIRD_VERT ;091 Bird Vertical Move
- DW PRC_OBJ_TBL_BIRD_HOR_FIRE ;092 Bird Horrizontal Move And Down Fired
- DW PRC_OBJ_TBL_BULLET ;093 Bullet Right
- DW PRC_OBJ_TBL_BULLET ;094 Bullet Left
- DW PRC_OBJ_TBL_BULLET ;095 Bullet Up
- DW PRC_OBJ_TBL_BULLET ;096 Bullet Down
- DW PRC_OBJ_TBL_MIRROR ;097 Mirror [/]
- DW PRC_OBJ_TBL_MIRROR ;098 Mirror [\]
- DW PRC_OBJ_TBL_MIRROR ;099 Mirror [/] With Bullet Right
- DW PRC_OBJ_TBL_MIRROR ;100 Mirror [/] With Bullet Left
- DW PRC_OBJ_TBL_MIRROR ;101 Mirror [/] With Bullet Down
- DW PRC_OBJ_TBL_MIRROR ;102 Mirror [/] With Bullet Up
- DW PRC_OBJ_TBL_MIRROR ;103 Mirror [\] With Bullet Left
- DW PRC_OBJ_TBL_MIRROR ;104 Mirror [\] With Bullet Right
- DW PRC_OBJ_TBL_MIRROR ;105 Mirror [\] With Bullet Up
- DW PRC_OBJ_TBL_MIRROR ;106 Mirror [\] With Bullet Down
- DW PRC_OBJ_TBL_SPACE ;107
- DW PRC_OBJ_TBL_SPACE ;108
- DW PRC_OBJ_TBL_SPACE ;109
- DW PRC_OBJ_TBL_SPACE ;110
- DW PRC_OBJ_TBL_SPACE ;111
- DW PRC_OBJ_TBL_GRAVITY ;112 Generator Of Shield
- DW PRC_OBJ_TBL_GRAVITY ;113 Shield
- DW PRC_OBJ_TBL_GRAVITY ;114 Magnit Right
- DW PRC_OBJ_TBL_GRAVITY ;115 Magnit Up
- DW PRC_OBJ_TBL_GRAVITY ;116 Magnit Left
- DW PRC_OBJ_TBL_GRAVITY ;117 Magnit Down
- DW PRC_OBJ_TBL_SPACE ;118
- DW PRC_OBJ_TBL_SPACE ;119
- DW PRC_OBJ_TBL_SPACE ;120
- DW PRC_OBJ_TBL_SPACE ;121
- DW PRC_OBJ_TBL_SPACE ;122
- DW PRC_OBJ_TBL_SPACE ;123
- DW PRC_OBJ_TBL_RADIUS_BOMB ;124 Explosion Radius (Bomb)
- DW PRC_OBJ_TBL_RADIUS_BUTTER ;125 Explosion Radius (Butterfly)
- DW PRC_OBJ_TBL_RADIUS_BOMBER ;126 Explosion Radius (Bomber)
- DW PRC_OBJ_TBL_SPACE ;127
- ; IN: D=OBJECT
- EXE_MAP_CHECK_GRAVITY:
- PUSH HL
- LD H,HIGH(GRAVITY_TBL)
- LD L,D
- RES 7,L
- LD A,(HL)
- OR A
- POP HL
- RET NZ
- LD HL,PRC_OBJ_TBL_GRAVITY_NOP
- RET
- EXE_MAP_CHECK_NO:
- RET
- ; IN: D=OBJECT
- EXE_MAP_ADD_ALL_GROUP:
- PUSH DE
- LD L,D
- LD H,0
- ADD HL,HL
- PUSH DE
- LD DE,PROC_GROUP_TBL
- ADD HL,DE
- LD A,(HL)
- INC HL
- LD H,(HL)
- LD L,A
- DEC HL
- LD D,(HL)
- DEC HL
- LD E,(HL)
- LD (EXMAGx1+1),DE
- INC HL
- INC HL
- POP DE
- EXMAGx1 CALL 0
- LD A,PR0_PAGE + 0
- CALL EXMADx0
- LD A,PR0_PAGE + 2
- CALL EXMADx0
- POP DE
- RET
- ; IN: A=PAGE
- ; HL=PRC_OBJ_TBL POINTER
- EXMADx0:CALL IORQTS.RAMPage2
- INC A
- CALL IORQTS.RAMPage3
- LD E,0
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_NOSPACE
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_UP
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_DOWN
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_LEFT
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_RIGHT
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_SLIDING
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_UP
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
- CALL EXE_MAP_ADD_ELEMENT
- LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
- CALL EXE_MAP_ADD_ELEMENT
- RET
- ; IN:HL=POINTER FOR RECORD CODE
- ; DE=ADDR TRAGET
- EXMADxCOPY_OBJ_CODE:
- PUSH HL DE BC AF
- INC HL
- INC HL
- LD B,0
- LD C,(HL)
- INC HL
- LD A,(HL)
- INC HL
- LD H,(HL)
- LD L,A
- LDIR
- POP AF BC DE HL
- RET
- SetupMapExecCodes:
- LD E,0FFH ;NOP
- LD A,PR0_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- CALL IORQTS.DMA_FILLMEM_PAGE
- ; LD D,000H ;SPACE
- ; CALL EXE_MAP_ADD_ALL_GROUP
- ; LD D,002H ;BOULDER
- ; CALL EXE_MAP_ADD_ALL_GROUP
- LD D,000H ;SPACE
- SEMECx1 PUSH DE
- CALL EXE_MAP_ADD_ALL_GROUP
- POP DE
- INC D
- JP P,SEMECx1
- RET
- ; IN: A=OBJECT
- ; HL=YX
- ; PAGE3=MAP PAGE
- ;OUT: L=L+1
- MapPutELE:
- PUSH DE AF HL
- LD D,A
- LD A,H
- OR 11000000B
- LD H,A
- LD A,L
- RLCA
- AND 01111110B
- LD L,A
- LD A,D
- CALL GET_MAP_ELE_A_TO_DE
- LD (HL),E
- INC L
- LD (HL),D
- POP HL AF
- INC L
- POP DE
- RET
- MapClear:
- CALL IORQTS.RAMPage3_PUSH
- XOR A ;SPACE
- ; LD A,2 ;BOULDER
- CALL GET_MAP_ELE_A_TO_DE
- LD (IORQTS.DMAFILLDATTA),DE
- LD A,IORQTS.PAGE
- LD HL,IORQTS.DMAFILLDATTA
- CALL IORQTS.DMA_SET_FROM
- LD A,MAP_PAGE
- LD HL,0102H
- CALL IORQTS.DMA_SET_TO
- LD A,TSL.DMAMD.FIL_RAM + TSL.DMAMD.A256D
- LD DE,256*(MAP_YS-2-1)+MAP_XS-2-1
- CALL IORQTS.DMA_START
- LD A,MAP_PAGE
- CALL IORQTS.RAMPage3
- LD A,7FH ;OUT OF MAP AREA
- LD H,01H
- LD B,MAP_YS-2
- MACLAx1 LD L,0
- CALL MapPutELE
- LD L,MAP_XS-1
- CALL MapPutELE
- INC H
- DJNZ MACLAx1
- CALL IORQTS.RAMPage3_POP
- CALL IORQTS.DMA_WAIT
- LD A,7FH ;OUT OF MAP AREA
- CALL GET_MAP_ELE_A_TO_DE
- LD (IORQTS.DMAFILLDATTA),DE
- LD HL,IORQTS.DMAFILLDATTA
- CALL IORQTS.DMA_SET_FROM_OFS
- LD A,MAP_PAGE
- LD HL,0000H
- CALL IORQTS.DMA_SET_TO
- LD A,TSL.DMAMD.FIL_RAM
- LD DE,MAP_XS-1
- CALL IORQTS.DMA_START
- CALL IORQTS.DMA_WAIT
- LD HL,IORQTS.DMAFILLDATTA
- CALL IORQTS.DMA_SET_FROM_OFS
- LD A,MAP_PAGE
- LD HL,256*(MAP_YS-1)
- CALL IORQTS.DMA_SET_TO
- LD A,TSL.DMAMD.FIL_RAM
- LD DE,MAP_XS-1
- CALL IORQTS.DMA_START
- CALL IORQTS.DMA_WAIT
- RET
- InitEF: LD A,MAP_PAGE
- CALL IORQTS.RAMPage3
- CALL MapClear
- LD HL,0103H
- LD A,02H ;BOULDER
- CALL MapPutELE
- LD A,02H ;BOULDER
- .10
- LD HL,0201H+@.C-1
- CALL MapPutELE
- ..
- LD HL,0902H
- LD A,01H ;EARTH
- CALL MapPutELE
- LD HL,0903H
- LD A,01H ;EARTH
- CALL MapPutELE
- LD HL,0904H
- LD A,01H ;EARTH
- CALL MapPutELE
- LD HL,0803H
- LD A,01H ;EARTH
- CALL MapPutELE
- LD A,07H ;WALL
- LD HL,0605H
- CALL MapPutELE
- LD HL,0705H
- CALL MapPutELE
- LD HL,0805H
- CALL MapPutELE
- LD HL,0905H
- CALL MapPutELE
- LD HL,0A05H
- CALL MapPutELE
- CALL SetupMapExecCodes
- LD A,TIL_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- LD A,T0G_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.DMA_CLEARMEM_PAGE
- CALL IORQTS.RAMPage3_PUSH
- LD A,TIL_PAGE
- CALL IORQTS.RAMPage3
- LD A,PAL_TILE+1
- MAC_LOAD_COLOR DE=RGB( 2, 2, 2) ;1
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB( 4, 4, 4) ;2
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB( 6, 6, 6) ;3
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB( 8, 8, 8) ;4
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(10,10,10) ;5
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(12,12,12) ;6
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(14,14,14) ;7
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(16,16,16) ;8
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(18,18,18) ;9
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(20,20,20) ;A
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(22,22,22) ;B
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(24,24,24) ;C
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(26,26,26) ;D
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(28,28,28) ;E
- CALL IORQTS.PalSetRGB
- INC A
- MAC_LOAD_COLOR DE=RGB(30,30,30) ;F
- CALL IORQTS.PalSetRGB
- LD BC,0300H + 27*256
- LD DE,0001H + PAL_TILE_54*256*16
- LD H,7
- INIEx2 PUSH HL BC
- LD L,40+3+3
- INIEx3 CALL PutTile
- INC C
- DEC L
- JR NZ,INIEx3
- POP BC HL
- INC B
- DEC H
- JR NZ,INIEx2
- LD A,T0G_PAGE
- CALL IORQTS.RAMPage3
- LD HL,0C004H
- LD A,85H
- LD B,8
- INIEx1 PUSH HL
- LD (HL),A
- INC L
- LD (HL),A
- INC L
- LD (HL),A
- INC L
- LD (HL),A
- POP HL
- ADD A,11H
- INC H
- DJNZ INIEx1
- CALL IORQTS.RAMPage3_POP
- RET
- ; IN:BC=YX
- ; DE=TILE
- PutTile:PUSH HL
- LD L,C
- ADD HL,HL
- LD H,B
- SET 7,H
- SET 6,H
- LD (HL),E
- INC L
- LD (HL),D
- POP HL
- RET
- ALIGN 256
- EXCHANGE_TBL
- .256
- DB @.C-1
- ..
- GRAVITY_TBL
- DS 256
- SLIDE_TBL
- DS 256
- ENDEND EQU $
- ORG GRAVITY_TBL
- DB 0 ;SPACE
- DB 0 ;EARTH
- DB 1 ;BOULDER
- ORG SLIDE_TBL
- DB 0 ;SPACE
- DB 1 ;EARTH
- DB 1 ;BOULDER
- ORG EXCHANGE_TBL
- DB 0 ;SPACE
- DB 1 ;EARTH
- DB 2 ;BOULDER
- DB 3 ;WALL
- ORG ENDEND
- GAME.END EQU $
- GAME.SIZE EQU GAME.END-GAME.START
- FREE EQU $
- DemoSave GAME
- SaveLabels "GAME.txt"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement