Guest User

Untitled

a guest
Jun 13th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;#SECTION "MAIN", CODE
  2.  
  3. MapBuffer equ   appBackUpScreen
  4. VarBuffer equ   appData
  5. CustomBlockBuffer equ   saveSScreen
  6. PlayerX equ VarBuffer
  7. PlayerY equ PlayerX + 1
  8. ScrollX equ PlayerY + 1
  9. ScrollY equ ScrollX + 1
  10. BlkEditX equ ScrollY + 1
  11. BlkEditY equ BlkEditX + 1
  12. BlkEditPtr equ BlkEditY + 1
  13. CurKey equ BlkEditPtr + 2
  14. NeedRedraw equ CurKey + 1
  15. CurBlk equ NeedRedraw + 1
  16. AltBlk equ CurBlk + 1
  17. JumpCounter equ AltBlk + 1
  18. TMP equ JumpCounter + 1
  19.  
  20.     org userMem - 2
  21.     db  0BBh, 6Dh
  22. Start:
  23.     B_CALL  _RunIndicOff
  24.     B_CALL  _ClrLCDFull
  25.     B_CALL  _GrBufClr
  26.  
  27.     ld  hl, MapBuffer         ; clear the map
  28.     ld  bc, 768
  29.     B_CALL  _MemClear
  30.  
  31.     ld  hl, VarBuffer         ; clear the space used for variables
  32.     ld  bc, 256
  33.     B_CALL  _MemClear
  34.  
  35.     ld  hl, plotSScreen + 9 ; make left edge of stats display
  36.     ld  b, 64
  37.     ld  a, 128
  38.     call    PutVert
  39.  
  40.     ld  hl, plotSScreen + 11 + 12 * 16 ; make solid ground in minimap
  41.     ld  b, 48
  42.     ld  a, 1
  43.     call    PutVert
  44.  
  45.     ld  hl, CustomBlockBuffer        ; clear out the custom block buffer
  46.     ld  bc, 8 * 16
  47.     B_CALL  _MemClear
  48.  
  49. ; init vars
  50.     ld  a, 2
  51.     ld  (CurBlk), a       ; store 2 (lowest user-available block) to current block
  52.     inc a
  53.     ld  (AltBlk), a       ; store 3 as the alternate block
  54.  
  55.     ld  a, 8
  56.     ld  (ScrollY), a
  57.     ld  a, 15
  58.     ld  (PlayerY), a
  59.  
  60.     ld  a, 1               ; make solid ground on map
  61.     ld  hl, MapBuffer + 48 * 15
  62.     ld  bc, 48
  63.     B_CALL  _MemSet
  64.  
  65.     call    BDisp          ; render the screen
  66.     call    SafeCopy       ; ... and display it!
  67.  
  68.     call    MainLoop       ; start main loop!
  69.     cp  skYEqu             ; if the key used to exit was Y=, start program over
  70.     jp  z, Start
  71.  
  72.     B_CALL  _ClrLCDFull    ; be nice and clear the screen when we're done
  73.     B_CALL  _HomeUp
  74.     ret
  75.  
  76. PutVert:                   ; makes a vertical column of A at DE, B rows tall
  77.     push    de
  78.     push    hl
  79.     ld  de, 12
  80. @:
  81.     ld  (hl), a
  82.     add hl, de
  83.     djnz    @B
  84.     pop hl
  85.     pop de
  86.     ret
  87.  
  88. PutVertI:                  ; makes a vertical column of (HL) at IX, B rows tall
  89.     ld  de, 12
  90. @:
  91.     ld  a, (hl)
  92.     ld  (ix + 0), a
  93.     inc hl
  94.     add ix, de
  95.     djnz    @B
  96.     ret
  97.  
  98. DelayB:                    ; simply delays for B interrupts
  99.     ei
  100. @:
  101.     halt
  102.     djnz    @B
  103.     ret
  104.  
  105. ;#SECTION "Game", CODE
  106.  
  107. MainLoop:
  108.     ld  b, 6
  109.     call    DelayB
  110.  
  111.     ld  de, (PlayerX)      ; player X -> E, player Y -> D
  112.     call    GetB
  113.     or  a
  114.     push    af
  115.     call    z, EraseMMP    ; if the player is occupying a blank tile, erase the minimap pixel
  116.     pop af
  117.     call    nz, Raise
  118.     call    TryFall
  119.  
  120.     ld  a, (NeedRedraw)    ; redraw if redraw flag is on
  121.     or  a
  122.     call    nz, DrawAll
  123.  
  124.     B_CALL  _GetCSC        ; READ KEY
  125.     or  a
  126.     jq  z, MainLoop        ; no key pressed? TRY AGAIN
  127.  
  128.     cp  skClear            ; exiting with Clear actually exits, but Y= restarts
  129.     ret z
  130.     cp  skYEqu
  131.     ret z
  132.  
  133.     ld  de, (PlayerX)
  134.     push    af
  135.     push    de
  136.     call    GetMMPix
  137.     cpl
  138.     and (hl)
  139.     ld  (hl), a
  140.     pop de
  141.     pop af
  142.     ld  (CurKey), a
  143.     cp  skLeft
  144.     call    z, GoLeft
  145.     ld  a, (CurKey)
  146.     cp  skRight
  147.     call    z, GoRight
  148.     ld  a, (CurKey)
  149.     cp  sk2nd
  150.     call    z, TryJumpCounter
  151.  
  152.     push    de             ; upcoming chunk of code has nothing to do with the X and Y so save them  
  153.  
  154.     ld  a, (CurKey)
  155.     cp  skLParen
  156.     call    z, BlkPrev
  157.  
  158.     ld  a, (CurKey)
  159.     cp  skRParen
  160.     call    z, BlkNext
  161.  
  162.     ld  a, (CurKey)
  163.     cp  skComma
  164.     call    z, BlkSwap
  165.  
  166.     ld  a, (CurKey)
  167.     cp  skMath
  168.     call    z, StartMenu
  169.  
  170.     ld  a, (CurKey)
  171.     cp  skTan
  172.     call    z, TanMenu
  173.  
  174.     pop de
  175.  
  176.     ld  a, d
  177.     and 15
  178.     ld  d, a
  179.     ld  (PlayerX), de
  180.     ld  a, (CurKey)
  181.     cp  skSquare
  182.     call    z, BlkLift
  183.     ld  a, (CurKey)
  184.     cp  skLog
  185.     call    z, BlkSink
  186.     call    AdjustHScroll
  187.     ld  de, (PlayerX)
  188.     call    ChkPutBlk
  189.     ld  a, 1
  190.     ld  (NeedRedraw), a
  191.     jq  MainLoop
  192.  
  193. GetBlkUnder:           ; fetch block type under the player
  194.     ld  de, (PlayerX)
  195.     inc d
  196.     call    GetB
  197.     ret
  198.  
  199. BlkLift:
  200.     call    GetBlkUnder  ; make sure the player is standing on something!
  201.     or  a
  202.     ret z
  203.     cp  1                ; ... that isn't the solid floor!
  204.     ret z
  205.  
  206.     push    af
  207.     call    EraseBlk
  208.     ld  de, (PlayerX)
  209.     call    GetB
  210.     pop af
  211.     call    PlaceBlk
  212.     ret
  213.  
  214. BlkSink:
  215.     call    GetBlkUnder  ; make sure the player is standing on something!
  216.     or  a
  217.     ret z
  218.     cp  1                ; ... that isn't the solid floor!
  219.     ret z
  220.  
  221.     push    af
  222.     call    EraseBlk
  223.     ld  de, (PlayerX)
  224.     inc d
  225.     inc d
  226.     call    GetB
  227.     or  a
  228.     jq  nz, NoEraseSink
  229.     pop af
  230.     call    PlaceBlk
  231.     ld  de, (PlayerX)
  232.     inc d
  233.     ld  (PlayerX), de
  234.     ret
  235.  
  236. NoEraseSink:
  237.     ld  de, (PlayerX)
  238.     inc d
  239.     call    GetB
  240.     pop af
  241.     call    PlaceBlk
  242.     ret
  243.  
  244. TryFall:
  245.     ld  de, (PlayerX)
  246.     ld  a, (JumpCounter)
  247.     or  a
  248.     jq  nz, TryJumpCounterR
  249.     ld  a, d
  250.     cp  15
  251.     ret z
  252.     inc d
  253.     call    GetB
  254.     or  a
  255.     jq  nz, AdjustVScroll
  256.     ld  (PlayerX), de
  257.     call    DrawAll
  258.     ret
  259.  
  260. TryJumpCounterR:
  261.     ld  a, (JumpCounter)
  262.     dec a
  263.     ld  (JumpCounter), a
  264.     cp  3
  265.     ret c
  266.     dec d
  267.     call    GetB
  268.     or  a
  269.     ret nz
  270.     ld  (PlayerX), de
  271.     call    DrawAll
  272.     ret
  273.  
  274. TryJumpCounter:
  275.     ld  a, (JumpCounter)
  276.     or  a
  277.     ret nz
  278.     push    de
  279.     ld  de, (PlayerX)
  280.     inc d
  281.     call    GetB
  282.     pop de
  283.     or  a
  284.     ret z
  285.     ld  a, 5
  286.     ld  (JumpCounter), a
  287.     ret
  288.  
  289. BlkSwap:
  290.     ld  a, (CurBlk)
  291.     ld  b, a
  292.     ld  a, (AltBlk)
  293.     ld  (CurBlk), a
  294.     ld  a, b
  295.     ld  (AltBlk), a
  296.     call    DrawAll
  297.     ret
  298.  
  299. BlkPrev:
  300.     ld  a, (CurBlk)
  301.     cp  2   ; minimum block in block list
  302.     ret z
  303.     dec a
  304.     ld  (CurBlk), a
  305.     ld  a, 1
  306.     ld  (NeedRedraw), a
  307.     call    DrawAll
  308.     ret
  309.  
  310. BlkNext:
  311.     ld  a, (CurBlk)
  312.     cp  NumBlks + 15 ; maximum block in block list
  313.     ret z
  314.     inc a
  315.     ld  (CurBlk), a
  316.     ld  a, 1
  317.     ld  (NeedRedraw), a
  318.     call    DrawAll
  319.     ret
  320.  
  321. RestorePos:     ; load saved position
  322.     ld  de, (TMP)
  323.     ret
  324.  
  325. MoveOnSolid:
  326.     call    GetB ; check position of block moved into
  327.     or  a        ; if it's empty space then that's fine
  328.     ret z
  329.     dec d        ; not empty space! is the block above empty space?
  330.     call    GetB
  331.     or  a        ; if it's filled with something, go back to the saved position
  332.     jq  nz, RestorePos
  333.     ret          ; but if it ISN'T, the decremented D stays and you're up 1 block
  334.  
  335. Raise:
  336.     dec d
  337.     ld  (PlayerX), de
  338.     ld  a, 1
  339.     ld  (NeedRedraw), a
  340.     ret
  341.  
  342. GoLeft:
  343.     ld  (TMP), de  ; save just in case movement is not possible
  344.     ld  a, e
  345.     or  a          ; can't move left if at leftmost part of map
  346.     ret z
  347.     dec e
  348.     jq  MoveOnSolid
  349.  
  350. GoRight:
  351.     ld  (TMP), de  ; save just in case movement is not possible
  352.     ld  a, e
  353.     cp  47         ; can't move right if at rightmost part of map
  354.     ret z
  355.     inc e
  356.     jq  MoveOnSolid
  357.  
  358. GetBClip:          ; Get block from map, with horizontal wraparound
  359.     ld  a, d
  360.     cp  -1
  361.     jr  nz, @F
  362.     ld  d, 47
  363. @:
  364.     cp  48
  365.     jr  nz, GetB
  366.     ld  d, 0
  367. GetB:                ; Get block from map
  368.     push    de
  369.     ld  a, e
  370.     ld  h, 0
  371.     ld  l, d
  372.  
  373.     ld  d, h
  374.     ld  e, l
  375.  
  376.     add hl, hl       ; *2
  377.     add hl, de       ; *3
  378.     add hl, hl       ; *6
  379.     add hl, hl       ; *12
  380.     add hl, hl       ; *24
  381.     add hl, hl       ; *48
  382.  
  383.     ld  d, 0
  384.     ld  e, a
  385.     add hl, de
  386.     ld  de, MapBuffer
  387.     add hl, de
  388.     pop de
  389.     ld  a, (hl)
  390.     ret
  391.  
  392. ;#SECTION "Data", DATA
  393.  
  394. TitleString:
  395.     db  "JoshCraft 0.4", 0
  396. PlayerSprite:
  397.     db  00111100b
  398.     db  01000010b
  399.     db  10100101b
  400.     db  10100101b
  401.     db  10000001b
  402.     db  10011001b
  403.     db  01000010b
  404.     db  00111100b
  405. BlkSpr:
  406.     db  0, 0, 0, 0, 0, 0, 0, 0
  407.     db  255, 255, 255, 255, 255, 255, 255, 255
  408.     db  255, 129, 129, 129, 129, 129, 129, 255
  409.     db  255, 213, 171, 213, 171, 213, 171, 255
  410.     db  255, 205, 179, 179, 205, 205, 179, 255
  411.     db  255, 241, 241, 241, 143, 143, 143, 255
  412.     db  255, 195, 165, 153, 153, 165, 195, 255
  413.     db  255, 129, 255, 129, 255, 129, 255, 255
  414. NumBlks equ 8
  415. NumKey2Off:
  416.     db  sk1, 1, -1
  417.     db  sk2, 1, 0
  418.     db  sk3, 1, 1
  419.     db  sk4, 0, -1
  420.     db  sk5, 0, 0
  421.     db  sk6, 0, 1
  422.     db  sk7, -1, -1
  423.     db  sk8, -1, 0
  424.     db  sk9, -1, 1
  425.     db  0
  426. BasicHelpStr:
  427.     db  "2nd: JumpCounter, Clear:Exit", 0
  428.     db  "1-9: Put block", 0
  429.     db  "(/): Select block", 0
  430.     db  "x\xd3/Log: Rise/Fall", 0
  431.     db  0
  432. ;#SECTION "Render", CODE
  433.  
  434. EraseMMP:
  435.     ld  de, (PlayerX)
  436.     call    GetMMPix
  437.     cpl
  438.     and (hl)
  439.     ld  (hl), a
  440.     ret
  441.  
  442. SetHScr0:
  443.     xor a
  444.     ld  (ScrollX), a
  445.     ret
  446.  
  447. SetHScrR:
  448.     ld  a, 48 - 9
  449.     ld  (ScrollX), a
  450.     ret
  451.  
  452. AdjustHScroll:
  453.     ld  a, (PlayerX)
  454.     cp  4
  455.     jq  c, SetHScr0
  456.     cp  48 - 4
  457.     jq  nc, SetHScrR
  458.     sub 4
  459.     ld  (ScrollX), a
  460.     ret
  461.  
  462. SetVScr0:
  463.     xor a
  464.     ld  (ScrollY), a
  465.     jq  DrawAll
  466.  
  467. SetVScr8:
  468.     ld  a, 8
  469.     ld  (ScrollY), a
  470.     jq  DrawAll
  471.  
  472. AdjustVScroll:
  473.     ld  a, (PlayerY)
  474.     cp  4
  475.     jq  c, SetVScr0
  476.     cp  12
  477.     jq  nc, SetVScr8
  478.     sub 3
  479.     ld  (ScrollY), a
  480. DrawAll:
  481.     ld  de, (PlayerX)
  482.     call    GetMMPix
  483.     or  (hl)
  484.     ld  (hl), a
  485.     xor a
  486.     ld  (NeedRedraw), a
  487.     call    BDisp
  488.     call    PutPlayer
  489.     call    SafeCopy
  490.     ld  a, (CurBlk)
  491.     call    Bimg
  492.     ld  ix, plotSScreen + 11
  493.     ld  b, 8
  494.     call    PutVertI
  495.     ld  a, (AltBlk)
  496.     call    Bimg
  497.     ld  ix, plotSScreen + 10
  498.     ld  b, 8
  499.     call    PutVertI
  500.     ret
  501.  
  502. PutPlayer:
  503.     ld  de, (PlayerX)
  504.     ld  hl, (ScrollX)
  505.     ld  a, d
  506.     sub h
  507.     add a, a
  508.     add a, a
  509.     add a, a
  510.     ld  b, a
  511.     ld  a, e
  512.     sub l
  513.     add a, a
  514.     add a, a
  515.     add a, a
  516.     cp  96 - 8 * 3
  517.     ret nc
  518.     ld  d, a
  519.     cp  8 * 10
  520.     jq  c, NoNeedSR
  521. NoNeedSR:
  522.     ld  e, b
  523.     ld  ix, PlayerSprite
  524.     ld  b, 8
  525.     call    Spr8b
  526.     ret
  527.  
  528. Bimg:
  529.     push    de
  530.     ld  de, BlkSpr
  531.     cp  NumBlks
  532.     call    nc, BimgCust
  533.     ld  h, 0
  534.     ld  l, a
  535.     add hl, hl
  536.     add hl, hl
  537.     add hl, hl
  538.     add hl, de
  539.     pop de
  540.     ret
  541.  
  542. BimgCust:
  543.     ld  de, CustomBlockBuffer
  544.     sub NumBlks
  545.     ret
  546.  
  547. BDisp:
  548.     ld  ix, plotSScreen
  549.     ld  de, (ScrollX)
  550.     call    GetBClip
  551.     ex  de, hl
  552.     call    BCol
  553.     call    BCol
  554.     call    BCol
  555.     call    BCol
  556.     call    BCol
  557.     call    BCol
  558.     call    BCol
  559.     call    BCol
  560.     call    BCol
  561.     ret
  562.  
  563. BCol:
  564.     push    ix
  565.     push    de
  566.     call    BBlk
  567.     call    BBlk
  568.     call    BBlk
  569.     call    BBlk
  570.     call    BBlk
  571.     call    BBlk
  572.     call    BBlk
  573.     call    BBlk
  574.     pop de
  575.     inc de
  576.     pop ix
  577.     inc ix
  578.     ret
  579.  
  580. BBlk:
  581.     ld  a, (de)
  582.     ex  de, hl
  583.     ld  de, 48
  584.     add hl, de
  585.     ex  de, hl
  586.     push    de
  587.     call    Bimg
  588.     ld  b, 8
  589. BBL:
  590.     ld  a, (hl)
  591.     ld  (ix + 0), a
  592.     inc hl
  593.     ld  de, 12
  594.     add ix, de
  595.     djnz    BBL
  596.     pop de
  597.     ret
  598.  
  599. ;#SECTION "PutBlock", CODE
  600.  
  601. ChkPutBlk:
  602.     ld  ix, NumKey2Off
  603.     ld  a, (CurKey)
  604.     ld  b, a
  605. @:
  606.     ld  a, (ix + 0)
  607.     or  a
  608.     ret z
  609.     cp  b
  610.     jp  z, OkPutBlk
  611.     inc ix
  612.     inc ix
  613.     inc ix
  614.     jq  @B
  615.     ret
  616.  
  617. OkPutBlk:
  618.     ld  l, (ix + 2)
  619.     ld  h, (ix + 1)
  620.     ld  de, (PlayerX)
  621.     ld  a, h
  622.     add a, d
  623.     ld  d, a
  624.     ld  a, l
  625.     add a, e
  626.     ld  e, a
  627.     call    GetBClip
  628.     ld  a, (hl)
  629.     or  a
  630.     jq  nz, EraseBlk
  631.     ld  a, (CurBlk)
  632. PlaceBlk:
  633.     ld  (hl), a
  634.     ld  a, 1
  635.     ld  (NeedRedraw), a
  636.     call    GetMMPix
  637.     or  (hl)
  638.     ld  (hl), a
  639.     ret
  640.  
  641. EraseBlk:
  642.     ld  a, (hl)
  643.     cp  1
  644.     ret z
  645.     ld  a, 0
  646.     ld  (hl), a
  647.     ld  a, 1
  648.     ld  (NeedRedraw), a
  649.     call    GetMMPix
  650.     cpl
  651.     and (hl)
  652.     ld  (hl), a
  653.     ret
  654.  
  655. GetMMPix:
  656.     ld  a, d
  657.     sub 96 - 16
  658.     ld  d, a
  659.     ld  a, 15 + 48 - 1
  660.     sub e
  661.     ld  e, a
  662.     call    GetPixel
  663.     ret
  664.  
  665. ;#SECTION "Menu", CODE
  666.  
  667. ShowBasicHelp:
  668.     ld  a, 1
  669.     ld  (penCol), a
  670.     ld  a, 10
  671.     ld  (penRow), a
  672.     ld  hl, BasicHelpStr
  673. DispChoices:
  674.     ld  a, (hl)
  675.     or  a
  676.     ret z
  677.     ld  a, 1
  678.     ld  (penCol), a
  679.     B_CALL  _VPutS
  680.     ld  a, (penRow)
  681.     add a, 7
  682.     ld  (penRow), a
  683.     jq  DispChoices
  684.  
  685. TanMenu:
  686.     ld  a, (CurBlk)
  687.     cp  NumBlks
  688.     jq  nc, BlkEdit
  689.     ret
  690.  
  691. ClearView:
  692.     ld  a, 0
  693.     ld  b, 9
  694.     ld  hl, plotSScreen
  695. @:
  696.     push    bc
  697.     ld  b, 64
  698.     call    PutVert
  699.     pop bc
  700.     inc hl
  701.     djnz    @B
  702.     ret
  703.  
  704. StartMenu:
  705.     call    ClearView
  706.     call    SafeCopy
  707.     ld  a, 2
  708.     ld  (penRow), a
  709.     ld  a, 13
  710.     ld  (penCol), a
  711.     ld  hl, TitleString
  712.     B_CALL  _VPutS
  713.     call    ShowBasicHelp
  714.     B_CALL  _GetKey
  715.     ret
  716.  
  717. ;#SECTION "BlkEdit", CODE
  718.  
  719. BlkEdLoop:
  720.     call    RenderBlkEd
  721.     call    SafeCopy
  722. @:
  723.     B_CALL  _GetCSC
  724.     or  a
  725.     jp  z, @B
  726.     cp  skClear
  727.     jp  z, BlkEdExit
  728.     cp  skTan
  729.     ret z
  730.  
  731.     ld  b, a
  732.     ld  de, (BlkEditX)
  733.     cp  skLeft
  734.     call    z, BlkEdGoL
  735.  
  736.     ld  a, b
  737.     cp  skRight
  738.     call    z, BlkEdGoR
  739.  
  740.     ld  a, b
  741.     cp  skUp
  742.     call    z, BlkEdGoU
  743.  
  744.     ld  a, b
  745.     cp  skDown
  746.     call    z, BlkEdGoD
  747.     ld  (BlkEditX), de
  748.  
  749.     ld  a, b
  750.     cp  skDel
  751.     call    z, BlkEdClear
  752.  
  753.     ld  a, b
  754.     cp  sk2nd
  755.     call    z, BlkEdSet
  756.     jp  BlkEdLoop
  757.  
  758. BlkEdClear:
  759.     ld  hl, (BlkEditPtr)
  760.     ld  b, 8
  761. @:
  762.     ld  (hl), 0
  763.     inc hl
  764.     djnz    @B
  765.     ret
  766.  
  767. BlkEdSet:
  768.     ld  hl, (BlkEditPtr)
  769.     ld  a, (BlkEditY)
  770.     add a, l
  771.     ld  l, a
  772.     adc a, h
  773.     sub l
  774.     ld  h, a
  775.     ld  a, (BlkEditX)
  776.     or  a
  777.     jp  z, BlkEdSet128
  778.     ld  b, a
  779.     ld  a, 128
  780. @:
  781.     srl a
  782.     djnz    @B
  783.     xor (hl)
  784.     ld  (hl), a
  785.     ret
  786.  
  787. BlkEdSet128:
  788.     ld  a, 128
  789.     xor (hl)
  790.     ld  (hl), a
  791.     ret
  792.  
  793. BlkEdExit:
  794.     ret
  795.  
  796. BlkEdGoL:
  797.     ld  a, e
  798.     dec a
  799.     and 7
  800.     ld  e, a
  801.     ret
  802.  
  803. BlkEdGoR:
  804.     ld  a, e
  805.     inc a
  806.     and 7
  807.     ld  e, a
  808.     ret
  809.  
  810. BlkEdGoU:
  811.     ld  a, d
  812.     dec a
  813.     and 7
  814.     ld  d, a
  815.     ret
  816.  
  817. BlkEdGoD:
  818.     ld  a, d
  819.     inc a
  820.     and 7
  821.     ld  d, a
  822.     ret
  823.  
  824. BlkEdit:
  825.     call    ClearView
  826.     ld  a, (CurBlk)
  827.     call    Bimg
  828.     ld  (BlkEditPtr), hl
  829.     call    RenderBlkEd
  830.     call    SafeCopy
  831.     jp  BlkEdLoop
  832.  
  833. RenderBlkEd:                 ; render block editor
  834.     call    ClearView
  835.     ld  hl, plotSScreen + 8
  836.     ld  b, 32
  837.     ld  de, 12
  838. @:
  839.     ld  a, 10101010b
  840.     ld  (hl), a
  841.     add hl, de
  842.     ld  a, 11010101b
  843.     ld  (hl), a
  844.     add hl, de
  845.     djnz    @B
  846.     ld  hl, plotSScreen
  847.     ld  ix, (BlkEditPtr)
  848.     ld  b, 8
  849. RndrBlkEL:
  850.     push    hl
  851.     push    bc
  852.     ld  a, (ix + 0)
  853.     ld  b, 8
  854. RndrBlkELR:
  855.     or  a
  856.     jp  p, RndrBlkELR2
  857.     push    af
  858.     push    bc
  859.     ld  a, 255
  860.     ld  b, 8
  861.     call    PutVert
  862.     pop bc
  863.     pop af
  864. RndrBlkELR2:
  865.     add a, a
  866.     inc hl
  867.     djnz    RndrBlkELR
  868.  
  869.     pop bc
  870.     pop hl
  871.     ld  de, 12 * 8
  872.     add hl, de
  873.     inc ix
  874.     djnz    RndrBlkEL
  875.     ld  ix, plotSScreen + 11
  876.     ld  hl, (BlkEditPtr)
  877.     ld  b, 8
  878.     call    PutVertI
  879.     ld  a, (BlkEditX)
  880.     add a, a
  881.     add a, a
  882.     add a, a
  883.     ld  d, a
  884.     ld  a, (BlkEditY)
  885.     add a, a
  886.     add a, a
  887.     add a, a
  888.     ld  e, a
  889.     ld  b, 8
  890.     ld  ix, PlayerSprite
  891.     call    Spr8b
  892.     ret
  893.  
  894. ;#IMPORT "LCDLIB"
Add Comment
Please, Sign In to add comment