Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3.  
  4.         EQU $ASAM.PASS.ERROR=2
  5.  
  6.  
  7.         Include "..\iorqts.inc"
  8.         Include "..\iorq_m.az8"
  9.         Include "..\tslab.az8"
  10.         Include "lvgame.ini"            ;API OBJECT GFX
  11.  
  12.         .EQUALLOC √
  13.          EQU $
  14.          ORG $+@.0
  15.         ..
  16.  
  17.         .PUSHA.HALF
  18.          PUSH HL DE BC AF
  19.         ..
  20.         .POPA.HALF
  21.          POP AF BC DE AF
  22.         ..
  23.  
  24.         .MAC_LOAD_COLOR =RGB(,,)
  25.          LD @.0, @.3*1 + @.2*32 + @.1*1024
  26.         ..
  27.  
  28.         .DW RGB(,,)
  29.          DW @.2*1 + @.1*32 + @.0*1024
  30.         ..
  31.  
  32.  
  33.           ORG PAL_FREE;0
  34. PAL_TILE  EQUALLOC 10H
  35. ;PAL_SPRT  EQUALLOC 10H
  36. ;PAL_KLUB  EQUALLOC 10H
  37. ;PAL_CHAR  EQUALLOC 10H
  38. PAL_BORDER EQU PAL_SPRT
  39.  
  40. PAL_TILE_76 EQU LOW(PAL_TILE/64)
  41. PAL_TILE_54 EQU LOW(LOW(PAL_TILE*4)/64)
  42.  
  43.         ;PAGES CONFIG
  44.           ORG PAGE_FREE;08H
  45. TIL_PAGE  EQUALLOC 8                    ;TILES PAGES
  46. T0G_PAGE  EQUALLOC 8                    ;TILE-0 GFX PAGE
  47. T1G_PAGE  EQUALLOC 8                    ;TILE-1 GFX PAGE
  48. ;PAGE_SPG  EQUALLOC 8                    ;SPRITE PAGE
  49. VID_PAGE  EQUALLOC 8                    ;GRAPHICS PAGE FOR 16C MODE
  50. MAP_PAGE  EQUALLOC 8
  51. PR0_PAGE  EQUALLOC 8
  52.  
  53.  
  54.         ORG IORQ.DEMO
  55.  
  56. GAME.START  EQU $
  57.  
  58.         EI
  59.  
  60.         HALT
  61.  
  62.         IORQTS.MAC.PAL_ON
  63.  
  64.         IORQTS.MAC.BORDER PAL_BORDER
  65.         MAC_LOAD_COLOR HL=RGB( 8, 0, 0)
  66.         LD (PAL_BORDER*2),HL
  67.  
  68.  
  69. ;        XOR A
  70. ;        CALL IORQTS.RAMPage3
  71.  
  72.         LD A,TSL.SYSCFG.14_MHZ+TSL.SYSCFG.CACHE
  73.         CALL IORQTS.SysConfig
  74.  
  75.  
  76.         LD A,TSL.VIDCFG.360x288+TSL.VIDCFG.16C+TSL.VIDCFG.NOGFX;+TSL.VIDCFG.TEXT;+TSL.VIDCFG.16C+TSL.VIDCFG.NOGFX
  77.         CALL IORQTS.VConfig
  78.         XOR A;+TSL.SEN;TSL.T0EN;+TSL.T0ZEN
  79.         CALL IORQTS.TSConfig
  80.  
  81.         LD A,0 + LOW(PAL_SPRT/16) + PAL_TILE_76*16;LOW(PAL_CHAR/64)*64 ;+ LOW(PAL_LINUX/64)*64 ;11110000B
  82.         CALL IORQTS.PalSel
  83.  
  84.         CALL InitEF
  85.  
  86.         LD A,PAGE_SPG
  87.         CALL IORQTS.SGPage
  88.  
  89.  
  90.         LD A,TIL_PAGE
  91.         CALL IORQTS.TMPage
  92.         LD A,T0G_PAGE
  93.         CALL IORQTS.T0GPage
  94.  
  95.  
  96.         LD A,MAP_PAGE + 1
  97.         CALL IORQTS.RAMPage2
  98.         LD A,MAP_PAGE
  99.         CALL IORQTS.RAMPage3
  100.         LD HL,4
  101.         LD DE,4-24
  102.         CALL IORQTS.T0OFS
  103.  
  104.         LD HL,EFFECT
  105.         LD (IORQ.EFFECT),HL
  106.  
  107. M1      XOR A
  108.         CALL WaitFrameGame
  109.         CALL SwapShadowMapPage
  110.  
  111.         LD A,4
  112.         CALL WaitFrameGame
  113.  
  114.         CALL MapSTP0
  115.         CALL MapSTP1
  116.  
  117.         LD A,7
  118.         CALL WaitFrameGame
  119.  
  120.         CALL WaitFinishShowerFrame
  121.         CALL OneStepAnimation
  122.         CALL OneStepUpdateTileFromMAP
  123.         JR M1
  124.  
  125.  
  126. WaitFinishShowerFrame:
  127.         LD HL,FINISH_FRAME_FLAG
  128.         INC (HL)
  129. WFISFx1 LD A,(HL)
  130.         OR A
  131.         RET Z
  132.         HALT
  133.         JR WFISFx1
  134.  
  135. ; IN: A=FRAME NUMBER
  136. ;OUT:ZF=RESULT COMPORATOR
  137. CheckFrameGame:
  138.         PUSH HL
  139.         LD HL,GAMEFRAME
  140.         CP (HL)
  141.         POP HL
  142.         RET
  143.  
  144.  
  145. ; IN: A=FRAME NUMBER
  146. WaitFrameGame:
  147.         CALL CheckFrameGame
  148.         RET Z
  149.         CALL IORQTS.WaitFrame
  150.         JR WaitFrameGame
  151.  
  152.  
  153. EFCOUNTER DB 0
  154.  
  155. EFFECT: LD HL,EFCOUNTER
  156.         INC (HL)
  157.  
  158.  
  159. GAMEFRAME EQU $+1
  160.         LD A,7
  161.         INC A
  162.         AND 7
  163.         LD (GAMEFRAME),A
  164.         PUSH AF
  165.         LD BC,1700H
  166.         CALL CreateOffsetTBL
  167.         CALL OneFrameMovmentMAP_A
  168.         CALL INT_PER_FIRST
  169.         POP AF
  170.         CALL Z,ZerroFrameUpdater
  171.         CALL OneFrameMovmentMAP_B
  172.         CALL IORQTS.RAMPage1_PUSH
  173.  
  174.         CALL IORQTS.RAMPage1_DEF
  175.         CALL IORQTS.RAMPage2_DEF
  176.         CALL IORQTS.RAMPage3_DEF
  177.  
  178.         CALL IORQTS.RAMPage1_POP
  179.         RET
  180.  
  181.  
  182. ZerroFrameUpdater:
  183.  
  184.         RET
  185.  
  186.  
  187.  
  188. INT_PER_FIRST:
  189.  
  190.         LD A,0 + TSL.SEN + TSL.T0EN;+TSL.T0ZEN + TSL.T1EN+TSL.T1ZEN; +
  191.         CALL IORQTS.TSConfig
  192.  
  193.         LD DE,PER_Y_FIRST    ;OFFSET POINTER FOR START SCREEN WINDOW
  194.         LD (IPERx1+1),DE
  195.         CALL IORQTS.SetIntY
  196.         LD HL,INT_PER_0
  197.         CALL SetNewIntVector
  198.  
  199.         LD HL,ADDR_SPRT_TILE;SP_TEST
  200.         CALL IPERx0
  201.  
  202.         RET
  203.  
  204. INT_PER_0:
  205.         PUSH HL DE BC AF
  206.  
  207.         CALL IPERx4
  208.  
  209. IPERx1  LD HL,0
  210.         LD DE,PER_Y_STEP
  211.         ADD HL,DE
  212.         LD (IPERx1+1),HL
  213.         PUSH HL
  214.         LD DE,PER_Y_LAST
  215.         AND A
  216.         SBC HL,DE
  217.         POP DE
  218.         JR NC,IPERx2
  219.         CALL IORQTS.SetIntY
  220.  
  221.  
  222. IPERx3  POP AF BC DE HL
  223.         EI
  224.         RET
  225.  
  226. FINISH_FRAME_FLAG DB 0
  227.  
  228. IPERx2  LD DE,PER_Y_LAST
  229.         CALL IORQTS.SetIntY
  230.         LD HL,INT_PER_1
  231.         CALL SetNewIntVector
  232.         XOR A
  233.         LD (FINISH_FRAME_FLAG),A
  234.         JP IPERx3
  235.  
  236. INT_PER_1:
  237.         PUSH HL DE BC AF
  238.         LD A,0 + TSL.T0EN; + TSL.SEN; + TSL.T0EN+TSL.T0ZEN + TSL.T1EN+TSL.T1ZEN; +
  239.         CALL IORQTS.TSConfig
  240.         LD DE,0
  241.         CALL IORQTS.SetIntY
  242.         CALL SetSystemIntVector
  243.         JP IPERx3
  244.  
  245.  
  246. IPERx4: LD HL,ADDR_SPRT_TILE;SP_TEST
  247. IPERx0: CALL IORQTS.DMA_WAIT
  248.         CALL IORQTS.DMA_ALL_REG_PUSH
  249.         PUSH HL
  250.  
  251.         LD A,PAGE_SPRT_TILE;IORQTS.RAMPage1_DEFSYS;IORQTS.PAGE
  252.         CALL IORQTS.DMA_SET_FROM
  253.         LD HL,0200H
  254.         CALL IORQTS.DMA_SET_TO
  255.         LD A,TSL.DMAMD.RAM_SFL
  256.         LD DE,PER_S_SIZ*6/2-1
  257.         CALL IORQTS.DMA_START
  258.  
  259.         POP HL
  260.  
  261.         LD DE,PER_S_STP*6
  262.         ADD HL,DE
  263.         LD (IPERx4+1),HL
  264.  
  265.         LD DE,0200H+PER_S_SIZ*6
  266.         CALL IORQTS.PackGenerateSprite_FinishDE
  267.  
  268.         CALL IORQTS.DMA_WAIT
  269.  
  270.         CALL IORQTS.DMA_ALL_REG_POP
  271.  
  272.         RET
  273.  
  274.  
  275.  
  276. OneStepAnimation:
  277.         CALL IORQTS.RAMPage2_PUSH
  278.         CALL IORQTS.RAMPage3_PUSH
  279.  
  280.         LD A,PAGE_ANIMATION     ;PAGE FOR TABLE RECORDS
  281.         CALL IORQTS.RAMPage3
  282.         LD A,PAGE_SPRT_TILE     ;PAGE FOR CODE ANIMATION
  283.         CALL IORQTS.RAMPage2
  284.  
  285.         CALL ADDR_API_ANIMATION
  286.  
  287.         CALL IORQTS.RAMPage3_POP
  288.         CALL IORQTS.RAMPage2_POP
  289.         RET
  290.  
  291.  
  292. OneStepUpdateTileFromMAP:
  293.         CALL IORQTS.RAMPage2_PUSH
  294.         CALL IORQTS.RAMPage3_PUSH
  295.  
  296.         CALL GetShadowMapPage
  297.         CALL IORQTS.RAMPage3
  298.         LD A,PAGE_SPRT_TILE     ;PAGE FOR CODE ANIMATION
  299.         CALL IORQTS.RAMPage2
  300.  
  301.         LD BC,0C000H    ;POINTER TO MAP DATA
  302.         CALL ADDR_API_SPRITE_GEN
  303.  
  304.         CALL IORQTS.RAMPage3_POP
  305.         CALL IORQTS.RAMPage2_POP
  306.         RET
  307.  
  308. OneFrameMovmentMAP_A:
  309.         CALL IORQTS.RAMPage2_PUSH
  310.         CALL IORQTS.RAMPage3_PUSH
  311.  
  312.         CALL GetShadowMapPageShower
  313.         CALL IORQTS.RAMPage3
  314.         LD A,PAGE_SPRT_TILE     ;PAGE FOR CODE ANIMATION
  315.         CALL IORQTS.RAMPage2
  316.  
  317.         LD D,0
  318.         LD B,0
  319. OFR_Ax1 LD HL,0C000H    ;POINTER TO MAP DATA
  320.         LD A,HIGH(ADDR_OFST_TBL)  ;HIGH OF TABLE FOR OFFSET ADDR_OFST_TBL
  321.         CALL ADDR_API_MOVMENTA
  322.         LD (OFR_Bx1+1),HL
  323.  
  324.         CALL IORQTS.RAMPage3_POP
  325.         CALL IORQTS.RAMPage2_POP
  326.         RET
  327.  
  328.  
  329. OneFrameMovmentMAP_B:
  330.         CALL IORQTS.RAMPage2_PUSH
  331.         CALL IORQTS.RAMPage3_PUSH
  332.  
  333.         CALL GetShadowMapPageShower
  334.         CALL IORQTS.RAMPage3
  335.         LD A,PAGE_SPRT_TILE     ;PAGE FOR CODE ANIMATION
  336.         CALL IORQTS.RAMPage2
  337.  
  338.         LD D,0
  339.         LD B,0
  340. OFR_Bx1 LD HL,0C000H    ;POINTER TO MAP DATA
  341.         LD A,HIGH(ADDR_OFST_TBL)  ;HIGH OF TABLE FOR OFFSET ADDR_OFST_TBL
  342.         CALL ADDR_API_MOVMENTB
  343.  
  344.  
  345.         CALL IORQTS.RAMPage3_POP
  346.         CALL IORQTS.RAMPage2_POP
  347.         RET
  348.  
  349. ; IN: A=FRAME 0..7 !?!?!?
  350. ;     C=X-OFS 0..23
  351. ;     B=Y-OFS 0..23
  352. CreateOffsetTBL:
  353.  
  354.         AND 00000111B
  355.         LD E,A
  356.         ADD A,A
  357.         ADD A,E
  358.         LD E,A
  359.  
  360.         CALL IORQTS.RAMPage2_PUSH
  361.         CALL IORQTS.RAMPage3_PUSH
  362.  
  363.         LD A,PAGE_SPRT_TILE     ;PAGE FOR CODE ANIMATION
  364.         CALL IORQTS.RAMPage2
  365.  
  366.  
  367.         LD A,SPR_TBL_XYOFS
  368.         SUB C
  369.         LD C,A
  370.         LD A,SPR_TBL_XYOFS
  371.         SUB B
  372.         LD B,A
  373.  
  374.  
  375.         LD L,C
  376.         LD H,B
  377.         LD (ADDR_OFST_TBL +                    MAP_FLAG_NONE        ),HL
  378.         LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_NONE        ),HL
  379.         LD (ADDR_OFST_TBL +                    MAP_FLAG_NOSPACE     ),HL
  380.         LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_NOSPACE     ),HL
  381.  
  382.         LD A,B
  383.         SUB E
  384.         LD H,A
  385.         LD (ADDR_OFST_TBL +                    MAP_FLAG_UP          ),HL
  386.         LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_UP          ),HL
  387.  
  388.         LD A,B
  389.         ADD A,E
  390.         LD H,A
  391.         LD (ADDR_OFST_TBL +                    MAP_FLAG_DOWN          ),HL
  392.         LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_DOWN  ),HL
  393.  
  394.         LD H,B
  395.         LD A,C
  396.         SUB E
  397.         LD L,A
  398.         LD (ADDR_OFST_TBL +                    MAP_FLAG_LEFT        ),HL
  399.         LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_LEFT        ),HL
  400.  
  401.         LD A,C
  402.         ADD A,E
  403.         LD L,A
  404.         LD (ADDR_OFST_TBL +                    MAP_FLAG_RIGHT       ),HL
  405.         LD (ADDR_OFST_TBL + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT       ),HL
  406.  
  407. ;MAP_FLAG_UP             EQU 00100000B
  408. ;MAP_FLAG_DOWN           EQU 00110111B
  409. ;MAP_FLAG_LEFT           EQU 01010000B
  410. ;MAP_FLAG_RIGHT          EQU 01100011B
  411. ;MAP_FLAG_NOSPACE        EQU 00000011B
  412. ;MAP_FLAG_SLIDING        EQU 10000000B
  413.  
  414.         CALL IORQTS.RAMPage3_POP
  415.         CALL IORQTS.RAMPage2_POP
  416.         RET
  417.  
  418.  
  419.  
  420.  
  421.  
  422. GetShadowMapPageShower:
  423. MAP_PAGE_SHOWER   EQU $+1
  424.         LD A,MAP_PAGE + 2
  425.         RET
  426.  
  427. GetShadowMapPage:
  428. MAP_PAGE_SHADOW   EQU $+1
  429.         LD A,MAP_PAGE + 1
  430.         RET
  431.  
  432. SwapShadowMapPage:
  433.         LD A,(MAP_PAGE_SHOWER)
  434.         PUSH AF
  435.         LD A,(MAP_PAGE_SHADOW)
  436.         LD (MAP_PAGE_SHOWER),A
  437.         POP AF
  438.         LD (MAP_PAGE_SHADOW),A
  439.         RET
  440.  
  441.  
  442.  
  443. CreateMapShadow:
  444.  
  445.         LD A,MAP_PAGE
  446.         LD HL,0C000H
  447.         CALL IORQTS.DMA_SET_FROM
  448.         CALL GetShadowMapPage
  449.         CALL IORQTS.DMA_SET_TO
  450.  
  451.         LD A,TSL.DMAMD.RAM_RAM + TSL.DMAMD.A256S + TSL.DMAMD.A256D
  452.         LD DE,MAP_XS-1 + 256*(MAP_YS-1)
  453.         CALL IORQTS.DMA_START
  454.         CALL IORQTS.DMA_WAIT
  455.  
  456.         RET
  457.  
  458.  
  459.         ALIGN 512
  460. ;MAP Gravity Step DROP OBJECTS
  461. MapSTP0:
  462.         CALL CreateMapShadow
  463.  
  464.         CALL IORQTS.RAMPage1_PUSH
  465.         CALL IORQTS.RAMPage2_PUSH
  466.         CALL IORQTS.RAMPage3_PUSH
  467.  
  468.         LD (MST0xSP+1),SP
  469.         CALL GetShadowMapPage
  470.         CALL IORQTS.RAMPage1
  471.  
  472.         LD A,PR0_PAGE + 0
  473.         CALL IORQTS.RAMPage2
  474.         INC A
  475.         CALL IORQTS.RAMPage3
  476.  
  477.         CALL GetShadowMapPage
  478.         CALL IORQTS.DMA_SET_FROM_PAGE
  479.         LD A,IORQTS.PAGE
  480.         CALL IORQTS.DMA_SET_TO_PAGE
  481.  
  482.  
  483.         LD H,040H + MAP_YS-2;07EH
  484.         LD XL,LOW((MAP_YS-1)/2)
  485. MST0x1  CALL MST_PROC_LINE_0A
  486.         DEC H
  487.         DEC H
  488.         CALL MST_PROC_LINE_0B
  489.         DEC H
  490.         DEC H
  491.         DEC XL
  492.         JP NZ,MST0x1
  493.         CALL MST_PROC_LINE_0A
  494.  
  495. MST0xSP LD SP,0
  496.         CALL IORQTS.RAMPage3_POP
  497.         CALL IORQTS.RAMPage2_POP
  498.         CALL IORQTS.RAMPage1_POP
  499.  
  500.  
  501.         RET
  502.  
  503. ;MAP Gravity Step DROP OBJECTS
  504. MapSTP1:
  505.         CALL IORQTS.RAMPage1_PUSH
  506.         CALL IORQTS.RAMPage2_PUSH
  507.         CALL IORQTS.RAMPage3_PUSH
  508.         LD (MST1xSP+1),SP
  509.  
  510.         LD A,MAP_PAGE
  511.         CALL IORQTS.RAMPage1
  512.  
  513.         LD A,PR0_PAGE + 2
  514.         CALL IORQTS.RAMPage2
  515.         INC A
  516.         CALL IORQTS.RAMPage3
  517.  
  518.         CALL GetShadowMapPage
  519.         CALL IORQTS.DMA_SET_FROM_PAGE
  520.         LD A,IORQTS.PAGE
  521.         CALL IORQTS.DMA_SET_TO_PAGE
  522.  
  523.  
  524.         LD H,040H
  525.         LD XL,LOW((MAP_YS-1)/2)
  526. MST1x1  ;LD SP,MSTxSTACK+2
  527.         CALL MST_PROC_LINE_1A
  528.         INC H
  529.         CALL MST_PROC_LINE_1B
  530.         INC H
  531.         DEC XL
  532.         JP NZ,MST1x1
  533.         CALL MST_PROC_LINE_1A
  534.  
  535.  
  536. MST1xSP LD SP,0
  537.         CALL IORQTS.RAMPage3_POP
  538.         CALL IORQTS.RAMPage2_POP
  539.         CALL IORQTS.RAMPage1_POP
  540.         RET
  541.  
  542.         .MAC_MST_PROC_LINE √
  543.          XOR A
  544.          LD L,2
  545.           LD (IORQTS.DMASAddrL_TMP),HL
  546.           LD BC,TSL.DMASAddrL
  547.           OUT (C),L
  548.           INC B
  549.           OUT (C),H
  550.          LD DE,@.0
  551.           LD (IORQTS.DMADAddrL_TMP),DE
  552.           LD B,HIGH(TSL.DMADAddrL)
  553.           OUT (C),E
  554.           INC B
  555.           OUT (C),D
  556.           LD B,HIGH(TSL.DMALen)
  557.           LD E,MAP_XS-1-1
  558.           LD (IORQTS.DMALen_TMP),DE
  559.           OUT (C),E
  560.           LD B,HIGH(TSL.DMANum)
  561.           LD L,A
  562.           LD (IORQTS.DMANum_TMP),A
  563.           OUT (C),A
  564.           LD B,HIGH(TSL.DMACtrl)
  565.           LD E,TSL.DMAMD.RAM_RAM
  566.           OUT (C),E
  567. @M1       IN A,(C)
  568.           RLCA
  569.           JR C,@M1
  570.          POP BC
  571.          LD (@.0+MAP_XS*2-2),BC
  572.          LD SP,@.0
  573.         ..
  574. ;----------------===
  575.  
  576.  
  577. MST_PROC_LINE_0A:
  578.         MAC_MST_PROC_LINE MSTxSTACK_A
  579.         INC H
  580.         RET
  581.  
  582. MST_PROC_LINE_0B:
  583.         MAC_MST_PROC_LINE MSTxSTACK_B
  584.         INC H
  585.         RET
  586.  
  587. MST_PROC_LINE_1A:
  588.         MAC_MST_PROC_LINE MSTxSTACK_B
  589.         RET
  590.  
  591. MST_PROC_LINE_1B:
  592.         MAC_MST_PROC_LINE MSTxSTACK_A
  593.         RET
  594.  
  595.         DS 128
  596.         ALIGN 512
  597. MSTxSTACK_A  EQU $                ;STACK FOR CASH TOKEN A
  598.         DS MAP_XS*2
  599.  
  600.         ORG MSTxSTACK_A+512
  601. MSTxSTACK_B  EQU $                ;STACK FOR CASH TOKEN B
  602.         DS MAP_XS*2
  603.  
  604.  
  605.  
  606.  
  607.  
  608. ;45x36  -> 22x18
  609. ;MAP_FLAG_SYS_NONE       EQU 00000000B
  610. ;MAP_FLAG_SYS_GRAVITY    EQU 00000001B
  611. ;MAP_FLAG_SYS_FREE2      EQU 00000010B
  612. ;MAP_FLAG_SYS_FREE3      EQU 00000011B
  613. ;MAP_FLAG_SYS_FREE4      EQU 00000100B
  614. ;MAP_FLAG_SYS_FREE5      EQU 00000101B
  615. ;MAP_FLAG_SYS_FREE6      EQU 00000110B
  616. ;MAP_FLAG_SYS_FREE7      EQU 00000111B
  617. ;MAP_FLAG_SYS_MASK       EQU 00000111B
  618.  
  619. ;00000000 80H
  620. ;││││││││ └┴─> HIGH BYTE OF OBJECT
  621. ;││││││││       80 - SPACE
  622. ;││││││││       81 - EARTH
  623. ;││││││││       82 - BOULDER
  624. ;││││││││
  625. ;││││││││
  626. ;││││││││
  627. ;││││││││
  628. ;││││││││
  629. ;││││││││      FLAGS = 0 IF SPACE
  630. ;││││││││
  631. ;│││││││└────>
  632. ;││││││└─────>
  633. ;│││││└──────>
  634. ;││││└───────>
  635. ;│││
  636. ;││
  637. ;││
  638. ;││
  639. ;│└──────────>
  640. ;└───────────>
  641. ;
  642. ;
  643. ;
  644. ;00,80 - SPACE
  645. ;
  646.  
  647.  
  648.         .MAC_P8_ADD_TBL √
  649. OBJ_@.0  DW @.0_SETUP
  650.          DB @.0_SIZE
  651.          DW @.0
  652.         ..
  653.  
  654.         .MAC_P8_BEGIN √
  655. @.0      EQU $
  656.         ..
  657.  
  658.  
  659.         .MAC_P8_END √
  660. @.0_SIZE EQU $-@.0
  661.         ..
  662.  
  663.  
  664. ;-----------------------------------------------------------------------------
  665.  
  666. MAC_P8_BEGIN P8_NOP
  667.         INC L              ;4    NEXT OBJECT DOWN
  668.         INC L              ;4    NEXT OBJECT DOWN
  669.         RET
  670. MAC_P8_END P8_NOP
  671.  
  672. ; IN:HL=P8_TBL
  673. ;    DE=OBJECT VALUE
  674. ;     A=EXCHANGER DATA
  675. P8_NOP_SETUP:
  676.         RET
  677.  
  678. ;-----------------------------------------------------------------------------
  679.  
  680. ;HL = POINTER + GRAVITY OFFSET
  681. ;OBJECT GRAVITY
  682. MAC_P8_BEGIN P8_GRAVITY    ;<----------------
  683.         INC L              ;4    NEXT OBJECT DOWN
  684.         INC L              ;4    NEXT OBJECT DOWN
  685.         LD A,(HL)          ;7
  686.         OR A
  687.         JP Z,P8Gx2         ;12.7 GO IF DOWN SPACE
  688.         RLCA               ;4    CHECK DOWN SLIDING OR SPACE
  689.         RET NC             ;10   RET IF CANT SLIDE
  690.  
  691.         INC L
  692.         INC L
  693.         LD A,(HL)
  694.         DEC H
  695.         OR (HL)
  696.         JP NZ,P8Gx1        ;12.7 GO FOR LEFT DOWN SLIDNG
  697. ;MOVE RIGHT
  698.         LD (HL),MAP_FLAG_NOSPACE
  699.         DEC L
  700.         DEC L
  701.         LD A,(HL)
  702.         OR MAP_FLAG_RIGHT  ;MOVE RIGHT FLAG
  703.         LD (HL),A
  704.         INC H
  705.         RET
  706. MAC_P8_END P8_GRAVITY      ;<----------------
  707.  
  708. P8Gx1   INC H
  709.         LD A,L
  710.         SUB 4
  711.         LD L,A
  712.         LD A,(HL)
  713.         DEC H
  714.         OR (HL)
  715.         JR Z,P8Gx3
  716.         INC L
  717.         INC L
  718.         INC H
  719.         RET
  720.  
  721. ;MOVE LEFT
  722. P8Gx3   LD (HL),MAP_FLAG_NOSPACE
  723.         INC L
  724.         INC L
  725.         LD A,(HL)
  726.         OR MAP_FLAG_LEFT  ;MOVE LEFT FLAG
  727.         LD (HL),A
  728.         INC H
  729.         RET
  730.  
  731. ;DROP DOWN
  732. P8Gx2   DEC H
  733.         LD A,(HL)
  734.         OR MAP_FLAG_DOWN  ;MOVE DOWN FLAG
  735.         LD (HL),A
  736.         INC H
  737.         LD (HL),MAP_FLAG_NOSPACE     ;CURRENT OBJECT NOT SPACE !!!
  738.         RET
  739.  
  740. ; IN:HL=P8_TBL
  741. ;    DE=OBJECT VALUE
  742. ;     A=EXCHANGER DATA
  743. P8_GRAVITY_SETUP:
  744.         RET
  745.  
  746. ;-----------------------------------------------------------------------------
  747.  
  748. ;HL = POINTER TO CURRENT MAP
  749. ;OBJECT GRAVITY
  750. MAC_P8_BEGIN E8_NOP      ;<EXECHENGER------
  751.         INC L
  752.         INC L
  753.         RET
  754. MAC_P8_END E8_NOP        ;<----------------
  755.  
  756. MAC_P8_BEGIN E8_SKIP     ;<EXECHENGER------
  757.         INC L
  758.         INC L
  759.         RET
  760. MAC_P8_END E8_SKIP       ;<----------------
  761.  
  762. MAC_P8_BEGIN E8_NOP_CHANG;<EXECHENGER------
  763.         INC L
  764.         INC L
  765. E8CHAx1 LD (HL),000H     ;FLAG
  766.         INC L
  767. E8CHAx2 LD (HL),000H     ;OBJ
  768.         DEC L
  769.         RET
  770. MAC_P8_END E8_NOP_CHANG  ;<----------------
  771.  
  772. E8_SKIP_SETUP:
  773.         RET
  774. E8_NOP_CHANG_SETUP:
  775.         RET
  776. ; IN:HL=P8_TBL
  777. ;    DE=OBJECT VALUE
  778. ;     A=EXCHANGER DATA
  779. E8_NOP_SETUP:
  780.         RET Z
  781.         LD HL,OBJ_E8_NOP_CHANG
  782.         LD (E8CHAx2+1),A
  783.         LD A,C
  784.         LD (E8CHAx1+1),A
  785.         RET
  786.  
  787. ;-----------------------------------------------------------------------------
  788.  
  789. MAC_P8_BEGIN E8_MOV_L    ;<EXECHENGER------
  790. P8MOLx1 LD (HL),0         ;FLAG
  791.         INC L
  792. P8MOLx2 LD (HL),0        ;OBJ
  793.         INC L
  794.         LD (HL),000H              ;FLAG
  795.         INC L
  796.         LD (HL),080H     ;OBJ
  797.         DEC L
  798.         RET
  799. MAC_P8_END E8_MOV_L      ;<----------------
  800.  
  801. ; IN:HL=P8_TBL
  802. ;    DE=OBJECT VALUE
  803. ;     A=EXCHANGER DATA
  804. E8_MOV_L_SETUP:
  805.         LD (P8MOLx2+1),A
  806.         LD A,C;CALL E8_FLAG_SETUP;LD A,E
  807.         LD (P8MOLx1+1),A
  808.         RET
  809.  
  810. ;-----------------------------------------------------------------------------
  811.  
  812. MAC_P8_BEGIN E8_MOV_R    ;<EXECHENGER------
  813.         INC L
  814.         INC L
  815.         LD (HL),000H     ;FLAG
  816.         INC L
  817.         LD (HL),080H     ;OBJ
  818.         INC L
  819. P8MORx1 LD (HL),0        ;FLAG
  820.         INC L
  821. P8MORx2 LD (HL),0        ;OBJ
  822.         DEC L
  823.         DEC L
  824.         RET
  825. MAC_P8_END E8_MOV_R      ;<----------------
  826.  
  827. ; IN:HL=P8_TBL
  828. ;    DE=OBJECT VALUE
  829. ;     A=EXCHANGER DATA
  830. E8_MOV_R_SETUP:
  831.         LD (P8MORx2+1),A
  832.         LD A,C
  833.         LD (P8MORx1+1),A
  834.         RET
  835.  
  836. ;-----------------------------------------------------------------------------
  837.  
  838. MAC_P8_BEGIN E8_MOV_U    ;<EXECHENGER------
  839.         INC L
  840.         INC L
  841.         LD (HL),000H     ;FLAG
  842.         INC L
  843.         LD (HL),080H     ;OBJ
  844.         DEC H
  845. P8MOUx2 LD (HL),0        ;OBJ
  846.         DEC L
  847. P8MOUx1 LD (HL),0        ;FLAG
  848.         INC H
  849.         RET
  850. MAC_P8_END E8_MOV_U      ;<----------------
  851.  
  852. ; IN:HL=P8_TBL
  853. ;    DE=OBJECT VALUE
  854. ;     A=EXCHANGER DATA
  855. E8_MOV_U_SETUP:
  856.         LD (P8MOUx2+1),A
  857.         LD A,C
  858.         LD (P8MOUx1+1),A
  859.         RET
  860.  
  861. ;-----------------------------------------------------------------------------
  862.  
  863. MAC_P8_BEGIN E8_MOV_D    ;<EXECHENGER------
  864.         INC L
  865.         INC L
  866.         LD (HL),000H     ;FLAG
  867.         INC L
  868.         LD (HL),080H     ;OBJ
  869.         INC H
  870. P8MODx2 LD (HL),0        ;OBJ
  871.         DEC L
  872. P8MODx1 LD (HL),0        ;FLAG
  873.         DEC H
  874.         RET
  875. MAC_P8_END E8_MOV_D      ;<----------------
  876.  
  877. ; IN:HL=P8_TBL
  878. ;    DE=OBJECT VALUE
  879. ;     A=EXCHANGER DATA
  880. E8_MOV_D_SETUP:
  881.         LD (P8MODx2+1),A
  882.         LD A,C
  883.         LD (P8MODx1+1),A
  884.         RET
  885.  
  886. ;-----------------------------------------------------------------------------
  887.  
  888. MAC_P8_BEGIN E8_RIGHT    ;<EXECHENGER------
  889. MAC_P8_END E8_RIGHT      ;<----------------
  890.  
  891. ;-----------------------------------------------------------------------------
  892.  
  893. P8_TBL  EQU $
  894.    MAC_P8_ADD_TBL P8_NOP
  895.    MAC_P8_ADD_TBL E8_NOP
  896.    MAC_P8_ADD_TBL E8_SKIP
  897.    MAC_P8_ADD_TBL E8_NOP_CHANG
  898.    MAC_P8_ADD_TBL P8_GRAVITY
  899.    MAC_P8_ADD_TBL E8_MOV_U
  900.    MAC_P8_ADD_TBL E8_MOV_D
  901.    MAC_P8_ADD_TBL E8_MOV_L
  902.    MAC_P8_ADD_TBL E8_MOV_R
  903.  
  904.  
  905.  
  906.  
  907.         DW EXE_MAP_CHECK_NO
  908. PRC_OBJ_TBL_SPACE
  909.         ;OBJECT                 ;FLAGS
  910.         DW OBJ_P8_NOP           ;OFS  + 0
  911.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  912.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  913.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  914.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  915.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  916.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  917.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  918.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  919.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  920.         DW OBJ_P8_NOP              ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  921.         DW OBJ_E8_SKIP          ;OFS  + 0
  922.         DW OBJ_E8_SKIP          ;OFS  + MAP_FLAG_NOSPACE
  923.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  924.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  925.         DW OBJ_E8_NOP               ;OFS                     + MAP_FLAG_LEFT
  926.         DW OBJ_E8_NOP          ;OFS                     + MAP_FLAG_RIGHT
  927.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  928.         DW OBJ_E8_NOP               ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  929.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  930.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  931.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  932.  
  933.         DW EXE_MAP_CHECK_NO
  934. PRC_OBJ_TBL_GRAVITY_NOP
  935.         ;OBJECT                 ;FLAGS
  936.         DW OBJ_P8_NOP           ;OFS  + 0
  937.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  938.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  939.         DW OBJ_P8_NOP                                        ;OFS                       + MAP_FLAG_DOWN
  940.         DW OBJ_P8_NOP                                     ;OFS                     + MAP_FLAG_LEFT
  941.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  942.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  943.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  944.         DW OBJ_P8_NOP                       ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  945.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  946.         DW OBJ_P8_NOP          ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  947.         DW OBJ_E8_SKIP          ;OFS  + 0
  948.         DW OBJ_E8_NOP              ;OFS  + MAP_FLAG_NOSPACE
  949.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  950.         DW OBJ_E8_NOP                 ;OFS                     + MAP_FLAG_DOWN
  951.         DW OBJ_E8_NOP                  ;OFS                                           + MAP_FLAG_LEFT
  952.         DW OBJ_E8_NOP           ;OFS                         + MAP_FLAG_RIGHT
  953.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  954.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  955.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  956.         DW OBJ_E8_NOP                ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  957.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  958.  
  959.         DW EXE_MAP_CHECK_GRAVITY
  960. PRC_OBJ_TBL_GRAVITY
  961.         ;OBJECT               ;FLAGS
  962.         DW OBJ_P8_NOP           ;OFS  + 0
  963.         DW OBJ_P8_GRAVITY       ;OFS  + MAP_FLAG_NOSPACE
  964.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  965.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  966.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  967.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  968.         DW OBJ_P8_GRAVITY       ;OFS  + MAP_FLAG_SLIDING
  969.         DW OBJ_P8_NOP         ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  970.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  971.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  972.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  973.         DW OBJ_E8_SKIP          ;OFS  + 0
  974.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  975.         DW OBJ_E8_MOV_U         ;OFS                     + MAP_FLAG_UP
  976.         DW OBJ_E8_MOV_D         ;OFS                     + MAP_FLAG_DOWN
  977.         DW OBJ_E8_MOV_L         ;OFS                     + MAP_FLAG_LEFT
  978.         DW OBJ_E8_MOV_R         ;OFS                     + MAP_FLAG_RIGHT
  979.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  980.         DW OBJ_E8_MOV_U         ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  981.         DW OBJ_E8_MOV_D         ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  982.         DW OBJ_E8_MOV_L         ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  983.         DW OBJ_E8_MOV_R         ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  984.  
  985.         DW EXE_MAP_CHECK_NO
  986. PRC_OBJ_TBL_BUTTERFLY
  987.         ;OBJECT                 ;FLAGS
  988.         DW OBJ_P8_NOP           ;OFS  + 0
  989.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  990.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  991.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  992.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  993.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  994.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  995.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  996.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  997.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  998.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  999.         DW OBJ_E8_SKIP          ;OFS  + 0
  1000.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1001.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1002.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1003.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1004.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1005.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1006.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1007.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1008.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1009.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1010.  
  1011.         DW EXE_MAP_CHECK_NO
  1012. PRC_OBJ_TBL_BOMBER
  1013.         ;OBJECT                 ;FLAGS
  1014.         DW OBJ_P8_NOP           ;OFS  + 0
  1015.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1016.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1017.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1018.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1019.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1020.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1021.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1022.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1023.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1024.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1025.         DW OBJ_E8_SKIP          ;OFS  + 0
  1026.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1027.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1028.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1029.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1030.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1031.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1032.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1033.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1034.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1035.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1036.  
  1037.         DW EXE_MAP_CHECK_NO
  1038. PRC_OBJ_TBL_BIRD_HOR
  1039.         ;OBJECT                 ;FLAGS
  1040.         DW OBJ_P8_NOP               ;OFS  + 0
  1041.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1042.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1043.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1044.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1045.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1046.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1047.         DW OBJ_P8_NOP                                          ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1048.         DW OBJ_P8_NOP              ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1049.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1050.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1051.         DW OBJ_E8_SKIP          ;OFS  + 0
  1052.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1053.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1054.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1055.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1056.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1057.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1058.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1059.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1060.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1061.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1062.  
  1063.         DW EXE_MAP_CHECK_NO
  1064. PRC_OBJ_TBL_BIRD_VERT
  1065.         ;OBJECT                 ;FLAGS
  1066.         DW OBJ_P8_NOP           ;OFS  + 0
  1067.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1068.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1069.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1070.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1071.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1072.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1073.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1074.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1075.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1076.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1077.         DW OBJ_E8_SKIP          ;OFS  + 0
  1078.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1079.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1080.         DW OBJ_E8_NOP           ;OFS                        + MAP_FLAG_DOWN
  1081.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1082.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1083.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1084.         DW OBJ_E8_NOP              ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1085.         DW OBJ_E8_NOP              ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1086.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1087.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1088.  
  1089.         DW EXE_MAP_CHECK_NO
  1090. PRC_OBJ_TBL_BIRD_HOR_FIRE
  1091.         ;OBJECT                 ;FLAGS
  1092.         DW OBJ_P8_NOP           ;OFS  + 0
  1093.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1094.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1095.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1096.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1097.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1098.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1099.         DW OBJ_P8_NOP                  ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1100.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1101.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1102.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1103.         DW OBJ_E8_SKIP          ;OFS  + 0
  1104.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1105.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1106.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1107.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1108.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1109.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1110.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1111.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1112.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1113.         DW OBJ_E8_NOP               ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1114.  
  1115.         DW EXE_MAP_CHECK_NO
  1116. PRC_OBJ_TBL_BULLET
  1117.         ;OBJECT                 ;FLAGS
  1118.         DW OBJ_P8_NOP           ;OFS  + 0
  1119.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1120.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1121.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1122.         DW OBJ_P8_NOP             ;OFS                     + MAP_FLAG_LEFT
  1123.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1124.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1125.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1126.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1127.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1128.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1129.         DW OBJ_E8_SKIP          ;OFS  + 0
  1130.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1131.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1132.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1133.         DW OBJ_E8_NOP                    ;OFS                     + MAP_FLAG_LEFT
  1134.         DW OBJ_E8_NOP                ;OFS                      + MAP_FLAG_RIGHT
  1135.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1136.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1137.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1138.         DW OBJ_E8_NOP        ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1139.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1140.  
  1141.         DW EXE_MAP_CHECK_NO
  1142. PRC_OBJ_TBL_MIRROR
  1143.         ;OBJECT            ;FLAGS
  1144.         DW OBJ_P8_NOP           ;OFS  + 0
  1145.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1146.         DW OBJ_P8_NOP               ;OFS                     + MAP_FLAG_UP
  1147.         DW OBJ_P8_NOP           ;OFS                       + MAP_FLAG_DOWN
  1148.         DW OBJ_P8_NOP                      ;OFS                     + MAP_FLAG_LEFT
  1149.         DW OBJ_P8_NOP                   ;OFS                     + MAP_FLAG_RIGHT
  1150.         DW OBJ_P8_NOP            ;OFS  + MAP_FLAG_SLIDING
  1151.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1152.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1153.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1154.         DW OBJ_P8_NOP                   ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1155.         DW OBJ_E8_SKIP                                  ;OFS  + 0
  1156.         DW OBJ_E8_NOP                   ;OFS  + MAP_FLAG_NOSPACE
  1157.         DW OBJ_E8_NOP               ;OFS                        + MAP_FLAG_UP
  1158.         DW OBJ_E8_NOP                             ;OFS                     + MAP_FLAG_DOWN
  1159.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1160.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1161.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1162.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1163.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1164.         DW OBJ_E8_NOP          ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1165.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1166.  
  1167.         DW EXE_MAP_CHECK_NO
  1168. PRC_OBJ_TBL_RADIUS_BOMB
  1169.         ;OBJECT                 ;FLAGS
  1170.         DW OBJ_P8_NOP           ;OFS  + 0
  1171.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1172.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1173.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1174.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1175.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1176.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1177.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1178.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1179.         DW OBJ_P8_NOP            ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1180.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1181.         DW OBJ_E8_SKIP          ;OFS  + 0
  1182.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1183.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1184.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1185.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1186.         DW OBJ_E8_NOP          ;OFS                     + MAP_FLAG_RIGHT
  1187.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1188.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1189.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1190.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1191.         DW OBJ_E8_NOP  ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1192.  
  1193.         DW EXE_MAP_CHECK_NO
  1194. PRC_OBJ_TBL_RADIUS_BUTTER
  1195.         ;OBJECT                 ;FLAGS
  1196.         DW OBJ_P8_NOP           ;OFS  + 0
  1197.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1198.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1199.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1200.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1201.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1202.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1203.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1204.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1205.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1206.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1207.         DW OBJ_E8_SKIP          ;OFS  + 0
  1208.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1209.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1210.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1211.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1212.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1213.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1214.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1215.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1216.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1217.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1218.  
  1219.         DW EXE_MAP_CHECK_NO
  1220. PRC_OBJ_TBL_RADIUS_BOMBER
  1221.         ;OBJECT                 ;FLAGS
  1222.         DW OBJ_P8_NOP           ;OFS  + 0
  1223.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1224.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_UP
  1225.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1226.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1227.         DW OBJ_P8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1228.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1229.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1230.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1231.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1232.         DW OBJ_P8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1233.         DW OBJ_E8_SKIP          ;OFS  + 0
  1234.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_NOSPACE
  1235.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_UP
  1236.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_DOWN
  1237.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_LEFT
  1238.         DW OBJ_E8_NOP           ;OFS                     + MAP_FLAG_RIGHT
  1239.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING
  1240.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1241.         DW OBJ_E8_NOP                                 ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1242.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1243.         DW OBJ_E8_NOP           ;OFS  + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1244.  
  1245.  
  1246. ; IN: A=OBJECT
  1247. ;OUT:DE=OBJECT WITH FLAG
  1248. GET_MAP_ELE_A_TO_DE:
  1249.         AND 01111111B
  1250.         LD D,A
  1251.         SET 7,D
  1252.         LD E,0
  1253.         RET Z
  1254.         PUSH HL
  1255.         LD H,HIGH(SLIDE_TBL)
  1256.         LD L,A
  1257.         LD A,(HL)
  1258.         OR A
  1259.         POP HL
  1260.         LD E,MAP_FLAG_SLIDING
  1261.         RET NZ
  1262.         LD E,MAP_FLAG_NOSPACE
  1263.         RET
  1264.  
  1265. ; IN: A=OBJECT
  1266. ;OUT:DE=OBJECT WITH FLAG
  1267. GET_MAP_ELE_A_TO_BC:
  1268.         AND 01111111B
  1269.         LD B,A
  1270.         SET 7,B
  1271.         LD C,0
  1272.         RET Z
  1273.         PUSH HL
  1274.         LD H,HIGH(SLIDE_TBL)
  1275.         LD L,A
  1276.         LD A,(HL)
  1277.         OR A
  1278.         POP HL
  1279.         LD C,MAP_FLAG_SLIDING
  1280.         RET NZ
  1281.         LD C,MAP_FLAG_NOSPACE
  1282.         RET
  1283.  
  1284.  
  1285. ; IN: A=OBJ
  1286. ;OUT: A=OBJ EXCHANGE
  1287. GET_MAP_EXCHANGE:
  1288.         PUSH HL
  1289.         LD H,HIGH(EXCHANGE_TBL)
  1290.         AND 01111111B
  1291.         LD L,A
  1292.         LD A,(HL)
  1293.         OR 080H
  1294.         POP HL
  1295.         RET
  1296.  
  1297. ; IN:HL=POINTER TO PRC_OBJ_RBL
  1298. ;     E=FLAGS
  1299. ;     D=OBJECT
  1300. EXE_MAP_ADD_ELEMENT:
  1301.         PUSH HL
  1302.         LD A,(HL)
  1303.         INC HL
  1304.         LD H,(HL)
  1305.         LD L,A
  1306.  
  1307.         LD A,D
  1308.         AND 01111111B
  1309.         OR 80H            ;32768..49151
  1310.         LD D,A
  1311.  
  1312.         PUSH BC HL DE
  1313.         LD DE,EXMADx3+1
  1314.         LDI
  1315.         LDI
  1316.         POP DE
  1317.  
  1318.         LD A,D
  1319.         CALL GET_MAP_EXCHANGE
  1320.         CALL GET_MAP_ELE_A_TO_BC
  1321.         PUSH DE
  1322.         EX DE,HL
  1323.         AND A
  1324.         SBC HL,BC
  1325.         POP DE
  1326.         POP HL
  1327.         LD A,B
  1328. ;        LD (E8_CUR_CHANGE_OBJ),A        ;SAVE TEMP CHANGE OBJECT
  1329. EXMADx3 CALL 0                          ;SETUP
  1330.         CALL EXMADxCOPY_OBJ_CODE
  1331.         POP BC
  1332.  
  1333.  
  1334.         POP HL
  1335.         INC HL
  1336.         INC HL
  1337.  
  1338.         RET
  1339.  
  1340.  
  1341. PROC_GROUP_TBL:
  1342.     DW PRC_OBJ_TBL_SPACE           ;000  Space
  1343.     DW PRC_OBJ_TBL_GRAVITY         ;001  Ground
  1344.     DW PRC_OBJ_TBL_GRAVITY          ;002  Boulder
  1345.     DW PRC_OBJ_TBL_GRAVITY         ;003  Boulder Burned [1/4]
  1346.     DW PRC_OBJ_TBL_GRAVITY         ;004  Boulder Burned [2/4]
  1347.     DW PRC_OBJ_TBL_GRAVITY    ;005  Boulder Burned [3/4]
  1348.     DW PRC_OBJ_TBL_GRAVITY    ;006  Boulder Burned [4/4]
  1349.     DW PRC_OBJ_TBL_GRAVITY         ;007  Brick Wall-1
  1350.     DW PRC_OBJ_TBL_GRAVITY         ;008  Brick Wall-2
  1351.     DW PRC_OBJ_TBL_GRAVITY         ;009  Brick Wall-3
  1352.     DW PRC_OBJ_TBL_GRAVITY         ;010  Brick Wall-4
  1353.     DW PRC_OBJ_TBL_GRAVITY         ;011  Hard Wall-1
  1354.     DW PRC_OBJ_TBL_GRAVITY         ;012  Hard Wall-2
  1355.     DW PRC_OBJ_TBL_GRAVITY  ;013  Hard Wall-3
  1356.     DW PRC_OBJ_TBL_GRAVITY         ;014  Hard Wall-4
  1357.     DW PRC_OBJ_TBL_GRAVITY         ;015  Herro
  1358.     DW PRC_OBJ_TBL_GRAVITY        ;016  Time Add
  1359.     DW PRC_OBJ_TBL_GRAVITY         ;017  Life
  1360.     DW PRC_OBJ_TBL_GRAVITY         ;018  Bomb
  1361.     DW PRC_OBJ_TBL_GRAVITY         ;019  Explosion Bomb
  1362.     DW PRC_OBJ_TBL_GRAVITY         ;020  Explosion To Space [1/4]
  1363.     DW PRC_OBJ_TBL_GRAVITY         ;021  Explosion To Space [2/4]
  1364.     DW PRC_OBJ_TBL_GRAVITY         ;022  Explosion To Space [3/4]
  1365.     DW PRC_OBJ_TBL_GRAVITY         ;023  Explosion To Space [4/4]
  1366.     DW PRC_OBJ_TBL_GRAVITY         ;024  Explosion Butterfly To Diamond [1/4]
  1367.     DW PRC_OBJ_TBL_GRAVITY         ;025  Explosion Butterfly To Diamond [2/4]
  1368.     DW PRC_OBJ_TBL_GRAVITY          ;026  Explosion Butterfly To Diamond [3/4]
  1369.     DW PRC_OBJ_TBL_GRAVITY         ;027  Explosion Butterfly To Diamond [4/4]
  1370.     DW PRC_OBJ_TBL_GRAVITY         ;028  Diamond
  1371.     DW PRC_OBJ_TBL_GRAVITY         ;029  Key-1 Red
  1372.     DW PRC_OBJ_TBL_GRAVITY         ;030  Key-2 Green
  1373.     DW PRC_OBJ_TBL_GRAVITY         ;031  Key-3 Blue
  1374.     DW PRC_OBJ_TBL_GRAVITY          ;032  Key-4 White
  1375.     DW PRC_OBJ_TBL_GRAVITY         ;033  Door-1 Horrizontal (Red)
  1376.     DW PRC_OBJ_TBL_GRAVITY         ;034  Door-2 Horrizontal (Green)
  1377.     DW PRC_OBJ_TBL_GRAVITY         ;035  Door-3 Horrizontal (Blue)
  1378.     DW PRC_OBJ_TBL_GRAVITY         ;036  Door-4 Horrizontal (White)
  1379.     DW PRC_OBJ_TBL_GRAVITY         ;037  Door-1 Vertical (Red)
  1380.     DW PRC_OBJ_TBL_GRAVITY         ;038  Door-2 Vertical (Green)
  1381.     DW PRC_OBJ_TBL_GRAVITY         ;039  Door-3 Vertical (Blue)
  1382.     DW PRC_OBJ_TBL_GRAVITY    ;040  Door-4 Vertical (White)
  1383.     DW PRC_OBJ_TBL_GRAVITY         ;041  Opened Door-1 Horrizontal (Red)
  1384.     DW PRC_OBJ_TBL_GRAVITY         ;042  Opened Door-2 Horrizontal (Green)
  1385.     DW PRC_OBJ_TBL_GRAVITY         ;043  Opened Door-3 Horrizontal (Blue)
  1386.     DW PRC_OBJ_TBL_GRAVITY         ;044  Opened Door-4 Horrizontal (White)
  1387.     DW PRC_OBJ_TBL_GRAVITY         ;045  Opened Door-1 Vertical (Red)
  1388.     DW PRC_OBJ_TBL_GRAVITY         ;046  Opened Door-2 Vertical (Green)
  1389.     DW PRC_OBJ_TBL_GRAVITY         ;047  Opened Door-3 Vertical (Blue)
  1390.     DW PRC_OBJ_TBL_GRAVITY         ;048  Opened Door-4 Vertical (White)
  1391.     DW PRC_OBJ_TBL_GRAVITY         ;049  Fire
  1392.     DW PRC_OBJ_TBL_GRAVITY         ;050  Bubble Of Water
  1393.     DW PRC_OBJ_TBL_GRAVITY         ;051  Bubble Split [1/4]
  1394.     DW PRC_OBJ_TBL_GRAVITY         ;052  Bubble Split [2/4]
  1395.     DW PRC_OBJ_TBL_GRAVITY         ;053  Bubble Split [3/4]
  1396.     DW PRC_OBJ_TBL_GRAVITY         ;054  Bubble Split [4/4]
  1397.     DW PRC_OBJ_TBL_GRAVITY         ;055  Wall Exchanger Freezed
  1398.     DW PRC_OBJ_TBL_GRAVITY         ;056  Wall Exchanger Actived
  1399.     DW PRC_OBJ_TBL_GRAVITY         ;057  Coin
  1400.     DW PRC_OBJ_TBL_GRAVITY         ;058  Exit-Door Closed
  1401.     DW PRC_OBJ_TBL_GRAVITY         ;059  Exit-Door Opened
  1402.     DW PRC_OBJ_TBL_GRAVITY         ;060  Gravity Up
  1403.     DW PRC_OBJ_TBL_GRAVITY         ;061  Gravity Down
  1404.     DW PRC_OBJ_TBL_GRAVITY         ;062  Gravity Left
  1405.     DW PRC_OBJ_TBL_GRAVITY         ;063  Gravity Right
  1406.     DW PRC_OBJ_TBL_GRAVITY         ;064  Teleport-1
  1407.     DW PRC_OBJ_TBL_GRAVITY         ;065  Teleport-2
  1408.     DW PRC_OBJ_TBL_GRAVITY         ;066  Teleport-3
  1409.     DW PRC_OBJ_TBL_GRAVITY         ;067  Teleport-4
  1410.     DW PRC_OBJ_TBL_GRAVITY         ;068  Teleport-5
  1411.     DW PRC_OBJ_TBL_GRAVITY         ;069  Teleport-6
  1412.     DW PRC_OBJ_TBL_GRAVITY         ;070  Teleport-7
  1413.     DW PRC_OBJ_TBL_GRAVITY         ;071  Teleport-8
  1414.     DW PRC_OBJ_TBL_GRAVITY         ;072  Slime-1
  1415.     DW PRC_OBJ_TBL_GRAVITY         ;073  Slime-2
  1416.     DW PRC_OBJ_TBL_GRAVITY         ;074  Slime-3
  1417.     DW PRC_OBJ_TBL_GRAVITY         ;075  Slime-4
  1418.     DW PRC_OBJ_TBL_BUTTERFLY       ;076  Butterfly
  1419.     DW PRC_OBJ_TBL_BOMBER          ;077  Bomber
  1420.     DW PRC_OBJ_TBL_GRAVITY         ;078  GoTo Right
  1421.     DW PRC_OBJ_TBL_GRAVITY         ;079  GoTo Up
  1422.     DW PRC_OBJ_TBL_GRAVITY         ;080  GoTo Left
  1423.     DW PRC_OBJ_TBL_GRAVITY         ;081  GoTo Down
  1424.     DW PRC_OBJ_TBL_GRAVITY         ;082  Gun Up
  1425.     DW PRC_OBJ_TBL_GRAVITY         ;083  Gun Right
  1426.     DW PRC_OBJ_TBL_GRAVITY         ;084  Gun Down
  1427.     DW PRC_OBJ_TBL_GRAVITY         ;085  Gun Left
  1428.     DW PRC_OBJ_TBL_GRAVITY         ;086  Gun-Rotated Up
  1429.     DW PRC_OBJ_TBL_GRAVITY         ;087  Gun-Rotated Right
  1430.     DW PRC_OBJ_TBL_GRAVITY         ;088  Gun-Rotated Down
  1431.     DW PRC_OBJ_TBL_GRAVITY         ;089  Gun-Rotated Left
  1432.     DW PRC_OBJ_TBL_BIRD_HOR        ;090  Bird Horrizontal Move
  1433.     DW PRC_OBJ_TBL_BIRD_VERT       ;091  Bird Vertical Move
  1434.     DW PRC_OBJ_TBL_BIRD_HOR_FIRE   ;092  Bird Horrizontal Move And Down Fired
  1435.     DW PRC_OBJ_TBL_BULLET          ;093  Bullet Right
  1436.     DW PRC_OBJ_TBL_BULLET          ;094  Bullet Left
  1437.     DW PRC_OBJ_TBL_BULLET          ;095  Bullet Up
  1438.     DW PRC_OBJ_TBL_BULLET          ;096  Bullet Down
  1439.     DW PRC_OBJ_TBL_MIRROR          ;097  Mirror [/]
  1440.     DW PRC_OBJ_TBL_MIRROR          ;098  Mirror [\]
  1441.     DW PRC_OBJ_TBL_MIRROR          ;099  Mirror [/] With Bullet Right
  1442.     DW PRC_OBJ_TBL_MIRROR          ;100  Mirror [/] With Bullet Left
  1443.     DW PRC_OBJ_TBL_MIRROR          ;101  Mirror [/] With Bullet Down
  1444.     DW PRC_OBJ_TBL_MIRROR          ;102  Mirror [/] With Bullet Up
  1445.     DW PRC_OBJ_TBL_MIRROR          ;103  Mirror [\] With Bullet Left
  1446.     DW PRC_OBJ_TBL_MIRROR          ;104  Mirror [\] With Bullet Right
  1447.     DW PRC_OBJ_TBL_MIRROR          ;105  Mirror [\] With Bullet Up
  1448.     DW PRC_OBJ_TBL_MIRROR          ;106  Mirror [\] With Bullet Down
  1449.     DW PRC_OBJ_TBL_SPACE           ;107
  1450.     DW PRC_OBJ_TBL_SPACE           ;108
  1451.     DW PRC_OBJ_TBL_SPACE           ;109
  1452.     DW PRC_OBJ_TBL_SPACE           ;110
  1453.     DW PRC_OBJ_TBL_SPACE           ;111
  1454.     DW PRC_OBJ_TBL_GRAVITY         ;112  Generator Of Shield
  1455.     DW PRC_OBJ_TBL_GRAVITY         ;113  Shield
  1456.     DW PRC_OBJ_TBL_GRAVITY         ;114  Magnit Right
  1457.     DW PRC_OBJ_TBL_GRAVITY         ;115  Magnit Up
  1458.     DW PRC_OBJ_TBL_GRAVITY         ;116  Magnit Left
  1459.     DW PRC_OBJ_TBL_GRAVITY         ;117  Magnit Down
  1460.     DW PRC_OBJ_TBL_SPACE           ;118
  1461.     DW PRC_OBJ_TBL_SPACE           ;119
  1462.     DW PRC_OBJ_TBL_SPACE           ;120
  1463.     DW PRC_OBJ_TBL_SPACE           ;121
  1464.     DW PRC_OBJ_TBL_SPACE           ;122
  1465.     DW PRC_OBJ_TBL_SPACE           ;123
  1466.     DW PRC_OBJ_TBL_RADIUS_BOMB     ;124  Explosion Radius (Bomb)
  1467.     DW PRC_OBJ_TBL_RADIUS_BUTTER   ;125  Explosion Radius (Butterfly)
  1468.     DW PRC_OBJ_TBL_RADIUS_BOMBER   ;126  Explosion Radius (Bomber)
  1469.     DW PRC_OBJ_TBL_SPACE           ;127
  1470.  
  1471. ; IN: D=OBJECT
  1472. EXE_MAP_CHECK_GRAVITY:
  1473.         PUSH HL
  1474.         LD H,HIGH(GRAVITY_TBL)
  1475.         LD L,D
  1476.         RES 7,L
  1477.         LD A,(HL)
  1478.         OR A
  1479.         POP HL
  1480.         RET NZ
  1481.         LD HL,PRC_OBJ_TBL_GRAVITY_NOP
  1482.         RET
  1483.  
  1484. EXE_MAP_CHECK_NO:
  1485.         RET
  1486.  
  1487.  
  1488. ; IN: D=OBJECT
  1489. EXE_MAP_ADD_ALL_GROUP:
  1490.  
  1491.         PUSH DE
  1492.         LD L,D
  1493.         LD H,0
  1494.         ADD HL,HL
  1495.         PUSH DE
  1496.         LD DE,PROC_GROUP_TBL
  1497.         ADD HL,DE
  1498.         LD A,(HL)
  1499.         INC HL
  1500.         LD H,(HL)
  1501.         LD L,A
  1502.  
  1503.         DEC HL
  1504.         LD D,(HL)
  1505.         DEC HL
  1506.         LD E,(HL)
  1507.         LD (EXMAGx1+1),DE
  1508.         INC HL
  1509.         INC HL
  1510.  
  1511.         POP DE
  1512. EXMAGx1 CALL 0
  1513.         LD A,PR0_PAGE + 0
  1514.         CALL EXMADx0
  1515.         LD A,PR0_PAGE + 2
  1516.         CALL EXMADx0
  1517.         POP DE
  1518.  
  1519.  
  1520.         RET
  1521.  
  1522. ; IN: A=PAGE
  1523. ;    HL=PRC_OBJ_TBL POINTER
  1524. EXMADx0:CALL IORQTS.RAMPage2
  1525.         INC A
  1526.         CALL IORQTS.RAMPage3
  1527.         LD E,0
  1528.         CALL EXE_MAP_ADD_ELEMENT
  1529.         LD E,0 + MAP_FLAG_NOSPACE
  1530.         CALL EXE_MAP_ADD_ELEMENT
  1531.         LD E,0                    + MAP_FLAG_UP
  1532.         CALL EXE_MAP_ADD_ELEMENT
  1533.         LD E,0                    + MAP_FLAG_DOWN
  1534.         CALL EXE_MAP_ADD_ELEMENT
  1535.         LD E,0                    + MAP_FLAG_LEFT
  1536.         CALL EXE_MAP_ADD_ELEMENT
  1537.         LD E,0                    + MAP_FLAG_RIGHT
  1538.         CALL EXE_MAP_ADD_ELEMENT
  1539.         LD E,0 + MAP_FLAG_SLIDING
  1540.         CALL EXE_MAP_ADD_ELEMENT
  1541.         LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_UP
  1542.         CALL EXE_MAP_ADD_ELEMENT
  1543.         LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_DOWN
  1544.         CALL EXE_MAP_ADD_ELEMENT
  1545.         LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_LEFT
  1546.         CALL EXE_MAP_ADD_ELEMENT
  1547.         LD E,0 + MAP_FLAG_SLIDING + MAP_FLAG_RIGHT
  1548.         CALL EXE_MAP_ADD_ELEMENT
  1549.         RET
  1550.  
  1551. ; IN:HL=POINTER FOR RECORD CODE
  1552. ;    DE=ADDR TRAGET
  1553. EXMADxCOPY_OBJ_CODE:
  1554.         PUSH HL DE BC AF
  1555.         INC HL
  1556.         INC HL
  1557.         LD B,0
  1558.         LD C,(HL)
  1559.         INC HL
  1560.         LD A,(HL)
  1561.         INC HL
  1562.         LD H,(HL)
  1563.         LD L,A
  1564.         LDIR
  1565.         POP AF BC DE HL
  1566.         RET
  1567.  
  1568.  
  1569. SetupMapExecCodes:
  1570.         LD E,0FFH        ;NOP
  1571.         LD A,PR0_PAGE
  1572.         CALL IORQTS.DMA_FILLMEM_PAGE
  1573.         CALL IORQTS.DMA_FILLMEM_PAGE
  1574.         CALL IORQTS.DMA_FILLMEM_PAGE
  1575.         CALL IORQTS.DMA_FILLMEM_PAGE
  1576.         CALL IORQTS.DMA_FILLMEM_PAGE
  1577.         CALL IORQTS.DMA_FILLMEM_PAGE
  1578.         CALL IORQTS.DMA_FILLMEM_PAGE
  1579.         CALL IORQTS.DMA_FILLMEM_PAGE
  1580.  
  1581. ;        LD D,000H                    ;SPACE
  1582. ;        CALL EXE_MAP_ADD_ALL_GROUP
  1583. ;        LD D,002H                    ;BOULDER
  1584. ;        CALL EXE_MAP_ADD_ALL_GROUP
  1585.  
  1586.         LD D,000H              ;SPACE
  1587. SEMECx1 PUSH DE
  1588.         CALL EXE_MAP_ADD_ALL_GROUP
  1589.         POP DE
  1590.         INC D
  1591.         JP P,SEMECx1
  1592.  
  1593.  
  1594.  
  1595.         RET
  1596.  
  1597. ; IN: A=OBJECT
  1598. ;    HL=YX
  1599. ;    PAGE3=MAP PAGE
  1600. ;OUT: L=L+1
  1601. MapPutELE:
  1602.  
  1603.         PUSH DE AF HL
  1604.         LD D,A
  1605.         LD A,H
  1606.         OR 11000000B
  1607.         LD H,A
  1608.         LD A,L
  1609.         RLCA
  1610.         AND 01111110B
  1611.         LD L,A
  1612.         LD A,D
  1613.         CALL GET_MAP_ELE_A_TO_DE
  1614.         LD (HL),E
  1615.         INC L
  1616.         LD (HL),D
  1617.         POP HL AF
  1618.         INC L
  1619.         POP DE
  1620.         RET
  1621.  
  1622. MapClear:
  1623.         CALL IORQTS.RAMPage3_PUSH
  1624.  
  1625.         XOR A           ;SPACE
  1626. ;        LD A,2  ;BOULDER
  1627.         CALL GET_MAP_ELE_A_TO_DE
  1628.         LD (IORQTS.DMAFILLDATTA),DE
  1629.  
  1630.         LD A,IORQTS.PAGE
  1631.         LD HL,IORQTS.DMAFILLDATTA
  1632.         CALL IORQTS.DMA_SET_FROM
  1633.         LD A,MAP_PAGE
  1634.         LD HL,0102H
  1635.         CALL IORQTS.DMA_SET_TO
  1636.  
  1637.         LD A,TSL.DMAMD.FIL_RAM + TSL.DMAMD.A256D
  1638.         LD DE,256*(MAP_YS-2-1)+MAP_XS-2-1
  1639.         CALL IORQTS.DMA_START
  1640.  
  1641.         LD A,MAP_PAGE
  1642.         CALL IORQTS.RAMPage3
  1643.  
  1644.         LD A,7FH        ;OUT OF MAP AREA
  1645.         LD H,01H
  1646.         LD B,MAP_YS-2
  1647. MACLAx1 LD L,0
  1648.         CALL MapPutELE
  1649.         LD L,MAP_XS-1
  1650.         CALL MapPutELE
  1651.         INC H
  1652.         DJNZ MACLAx1
  1653.  
  1654.         CALL IORQTS.RAMPage3_POP
  1655.  
  1656.         CALL IORQTS.DMA_WAIT
  1657.  
  1658.         LD A,7FH        ;OUT OF MAP AREA
  1659.         CALL GET_MAP_ELE_A_TO_DE
  1660.         LD (IORQTS.DMAFILLDATTA),DE
  1661.  
  1662.         LD HL,IORQTS.DMAFILLDATTA
  1663.         CALL IORQTS.DMA_SET_FROM_OFS
  1664.         LD A,MAP_PAGE
  1665.         LD HL,0000H
  1666.         CALL IORQTS.DMA_SET_TO
  1667.         LD A,TSL.DMAMD.FIL_RAM
  1668.         LD DE,MAP_XS-1
  1669.         CALL IORQTS.DMA_START
  1670.         CALL IORQTS.DMA_WAIT
  1671.  
  1672.         LD HL,IORQTS.DMAFILLDATTA
  1673.         CALL IORQTS.DMA_SET_FROM_OFS
  1674.         LD A,MAP_PAGE
  1675.         LD HL,256*(MAP_YS-1)
  1676.         CALL IORQTS.DMA_SET_TO
  1677.         LD A,TSL.DMAMD.FIL_RAM
  1678.         LD DE,MAP_XS-1
  1679.         CALL IORQTS.DMA_START
  1680.         CALL IORQTS.DMA_WAIT
  1681.  
  1682.  
  1683.         RET
  1684.  
  1685. InitEF: LD A,MAP_PAGE
  1686.         CALL IORQTS.RAMPage3
  1687.  
  1688.         CALL MapClear
  1689.  
  1690.         LD HL,0103H
  1691.         LD A,02H     ;BOULDER
  1692.         CALL MapPutELE
  1693.  
  1694.         LD A,02H     ;BOULDER
  1695.         .10
  1696.          LD HL,0201H+@.C-1
  1697.          CALL MapPutELE
  1698.         ..
  1699.  
  1700.         LD HL,0902H
  1701.         LD A,01H     ;EARTH
  1702.         CALL MapPutELE
  1703.         LD HL,0903H
  1704.         LD A,01H     ;EARTH
  1705.         CALL MapPutELE
  1706.         LD HL,0904H
  1707.         LD A,01H     ;EARTH
  1708.         CALL MapPutELE
  1709.         LD HL,0803H
  1710.         LD A,01H     ;EARTH
  1711.         CALL MapPutELE
  1712.         LD A,07H     ;WALL
  1713.         LD HL,0605H
  1714.         CALL MapPutELE
  1715.         LD HL,0705H
  1716.         CALL MapPutELE
  1717.         LD HL,0805H
  1718.         CALL MapPutELE
  1719.         LD HL,0905H
  1720.         CALL MapPutELE
  1721.         LD HL,0A05H
  1722.         CALL MapPutELE
  1723.  
  1724.  
  1725.  
  1726.         CALL SetupMapExecCodes
  1727.  
  1728.         LD A,TIL_PAGE
  1729.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1730.         LD A,T0G_PAGE
  1731.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1732.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1733.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1734.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1735.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1736.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1737.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1738.         CALL IORQTS.DMA_CLEARMEM_PAGE
  1739.  
  1740.  
  1741.  
  1742.         CALL IORQTS.RAMPage3_PUSH
  1743.  
  1744.         LD A,TIL_PAGE
  1745.         CALL IORQTS.RAMPage3
  1746.  
  1747.         LD A,PAL_TILE+1
  1748.         MAC_LOAD_COLOR DE=RGB( 2, 2, 2)         ;1
  1749.         CALL IORQTS.PalSetRGB
  1750.         INC A
  1751.         MAC_LOAD_COLOR DE=RGB( 4, 4, 4)         ;2
  1752.         CALL IORQTS.PalSetRGB
  1753.         INC A
  1754.         MAC_LOAD_COLOR DE=RGB( 6, 6, 6)         ;3
  1755.         CALL IORQTS.PalSetRGB
  1756.         INC A
  1757.         MAC_LOAD_COLOR DE=RGB( 8, 8, 8)         ;4
  1758.         CALL IORQTS.PalSetRGB
  1759.         INC A
  1760.         MAC_LOAD_COLOR DE=RGB(10,10,10)         ;5
  1761.         CALL IORQTS.PalSetRGB
  1762.         INC A
  1763.         MAC_LOAD_COLOR DE=RGB(12,12,12)         ;6
  1764.         CALL IORQTS.PalSetRGB
  1765.         INC A
  1766.         MAC_LOAD_COLOR DE=RGB(14,14,14)         ;7
  1767.         CALL IORQTS.PalSetRGB
  1768.         INC A
  1769.         MAC_LOAD_COLOR DE=RGB(16,16,16)         ;8
  1770.         CALL IORQTS.PalSetRGB
  1771.         INC A
  1772.         MAC_LOAD_COLOR DE=RGB(18,18,18)         ;9
  1773.         CALL IORQTS.PalSetRGB
  1774.         INC A
  1775.         MAC_LOAD_COLOR DE=RGB(20,20,20)         ;A
  1776.         CALL IORQTS.PalSetRGB
  1777.         INC A
  1778.         MAC_LOAD_COLOR DE=RGB(22,22,22)         ;B
  1779.         CALL IORQTS.PalSetRGB
  1780.         INC A
  1781.         MAC_LOAD_COLOR DE=RGB(24,24,24)         ;C
  1782.         CALL IORQTS.PalSetRGB
  1783.         INC A
  1784.         MAC_LOAD_COLOR DE=RGB(26,26,26)         ;D
  1785.         CALL IORQTS.PalSetRGB
  1786.         INC A
  1787.         MAC_LOAD_COLOR DE=RGB(28,28,28)         ;E
  1788.         CALL IORQTS.PalSetRGB
  1789.         INC A
  1790.         MAC_LOAD_COLOR DE=RGB(30,30,30)         ;F
  1791.         CALL IORQTS.PalSetRGB
  1792.  
  1793.         LD BC,0300H + 27*256
  1794.         LD DE,0001H + PAL_TILE_54*256*16
  1795.         LD H,7
  1796. INIEx2  PUSH HL BC
  1797.         LD L,40+3+3
  1798. INIEx3  CALL PutTile
  1799.         INC C
  1800.         DEC L
  1801.         JR NZ,INIEx3
  1802.         POP BC HL
  1803.         INC B
  1804.         DEC H
  1805.         JR NZ,INIEx2
  1806.  
  1807.         LD A,T0G_PAGE
  1808.         CALL IORQTS.RAMPage3
  1809.         LD HL,0C004H
  1810.         LD A,85H
  1811.         LD B,8
  1812. INIEx1  PUSH HL
  1813.         LD (HL),A
  1814.         INC L
  1815.         LD (HL),A
  1816.         INC L
  1817.         LD (HL),A
  1818.         INC L
  1819.         LD (HL),A
  1820.         POP HL
  1821.         ADD A,11H
  1822.         INC H
  1823.         DJNZ INIEx1
  1824.  
  1825.         CALL IORQTS.RAMPage3_POP
  1826.  
  1827.         RET
  1828.  
  1829.  
  1830. ; IN:BC=YX
  1831. ;    DE=TILE
  1832. PutTile:PUSH HL
  1833.         LD L,C
  1834.         ADD HL,HL
  1835.         LD H,B
  1836.         SET 7,H
  1837.         SET 6,H
  1838.         LD (HL),E
  1839.         INC L
  1840.         LD (HL),D
  1841.         POP HL
  1842.         RET
  1843.  
  1844.         ALIGN 256
  1845. EXCHANGE_TBL
  1846.         .256
  1847.          DB @.C-1
  1848.         ..
  1849. GRAVITY_TBL
  1850.         DS 256
  1851. SLIDE_TBL
  1852.         DS 256
  1853.  
  1854.  
  1855. ENDEND  EQU $
  1856.  
  1857.         ORG GRAVITY_TBL
  1858.         DB 0                ;SPACE
  1859.         DB 0            ;EARTH
  1860.         DB 1            ;BOULDER
  1861.  
  1862.         ORG SLIDE_TBL
  1863.         DB 0            ;SPACE
  1864.         DB 1            ;EARTH
  1865.         DB 1               ;BOULDER
  1866.  
  1867.         ORG EXCHANGE_TBL
  1868.         DB 0            ;SPACE
  1869.         DB 1            ;EARTH
  1870.         DB 2            ;BOULDER
  1871.         DB 3            ;WALL
  1872.  
  1873.         ORG ENDEND
  1874.  
  1875. GAME.END    EQU $
  1876. GAME.SIZE   EQU GAME.END-GAME.START
  1877.  
  1878.  
  1879. FREE    EQU $
  1880.  
  1881.         DemoSave GAME
  1882.         SaveLabels "GAME.txt"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement