Advertisement
AneMou

Part II - Lesson 15: Objects - main.asm

Oct 19th, 2024 (edited)
762
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Z80 Assembler 7.56 KB | Source Code | 0 0
  1. INCLUDE "hardware.inc"
  2.  
  3. SECTION "Header", ROM0[$100]
  4.  
  5.     jp EntryPoint
  6.  
  7.     ds $150 - @, 0 ; Make room for the header
  8.  
  9. EntryPoint:
  10.     ; Do not turn the LCD off outside of VBlank
  11. WaitVBlank:
  12.     ld a, [rLY]
  13.     cp 144
  14.     jp c, WaitVBlank
  15.  
  16.     ; Turn the LCD off
  17.     ld a, 0
  18.     ld [rLCDC], a
  19.  
  20.     ; Copy the tile data
  21.     ld de, Tiles
  22.     ld hl, $9000
  23.     ld bc, TilesEnd - Tiles
  24. CopyTiles:
  25.     ld a, [de]
  26.     ld [hli], a
  27.     inc de
  28.     dec bc
  29.     ld a, b
  30.     or a, c
  31.     jp nz, CopyTiles
  32.  
  33.     ; Copy the tilemap
  34.     ld de, Tilemap
  35.     ld hl, $9800
  36.     ld bc, TilemapEnd - Tilemap
  37. CopyTilemap:
  38.     ld a, [de]
  39.     ld [hli], a
  40.     inc de
  41.     dec bc
  42.     ld a, b
  43.     or a, c
  44.     jp nz, CopyTilemap
  45.  
  46.     ; Copy the paddle tile
  47.     ld de, Paddle
  48.     ld hl, $8000
  49.     ld bc, PaddleEnd - Paddle
  50. CopyPaddle:
  51.     ld a, [de]
  52.     ld [hli], a
  53.     inc de
  54.     dec bc
  55.     ld a, b
  56.     or a, c
  57.     jp nz, CopyPaddle
  58.  
  59.     ld a, 0
  60.     ld b, 160
  61.     ld hl, _OAMRAM
  62. ClearOam:
  63.     ld [hli], a
  64.     dec b
  65.     jp nz, ClearOam
  66.  
  67.     ld hl, _OAMRAM
  68.     ld a, 128 + 16
  69.     ld [hli], a
  70.     ld a, 16 + 8
  71.     ld [hli], a
  72.     ld a, 0
  73.     ld [hli], a
  74.     ld [hli], a
  75.  
  76.     ; Turn the LCD on
  77.     ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON
  78.     ld [rLCDC], a
  79.  
  80.     ; During the first (blank) frame, initialize display registers
  81.     ld a, %11100100
  82.     ld [rBGP], a
  83.     ld a, %11100100
  84.     ld [rOBP0], a
  85.  
  86.     ; Initialize global variables
  87.     ld a, 0
  88.     ld [wFrameCounter], a
  89.  
  90. Main:
  91.     ld a, [rLY]
  92.     cp 144
  93.     jp nc, Main
  94. WaitVBlank2:
  95.     ld a, [rLY]
  96.     cp 144
  97.     jp c, WaitVBlank2
  98.  
  99.     ld a, [wFrameCounter]
  100.     inc a
  101.     ld [wFrameCounter], a
  102.     cp a, 15 ; Every 15 frames (a quarter of a second), run the following code
  103.     jp nz, Main
  104.  
  105.     ; Reset the frame counter back to 0
  106.     ld a, 0
  107.     ld [wFrameCounter], a
  108.  
  109.     ; Move the paddle one pixel to the right.
  110.     ld a, [_OAMRAM + 1]
  111.     inc a
  112.     ld [_OAMRAM + 1], a
  113.     jp Main
  114.  
  115. Tiles:
  116.     dw `33333333
  117.     dw `33333333
  118.     dw `33333333
  119.     dw `33322222
  120.     dw `33322222
  121.     dw `33322222
  122.     dw `33322211
  123.     dw `33322211
  124.     dw `33333333
  125.     dw `33333333
  126.     dw `33333333
  127.     dw `22222222
  128.     dw `22222222
  129.     dw `22222222
  130.     dw `11111111
  131.     dw `11111111
  132.     dw `33333333
  133.     dw `33333333
  134.     dw `33333333
  135.     dw `22222333
  136.     dw `22222333
  137.     dw `22222333
  138.     dw `11222333
  139.     dw `11222333
  140.     dw `33333333
  141.     dw `33333333
  142.     dw `33333333
  143.     dw `33333333
  144.     dw `33333333
  145.     dw `33333333
  146.     dw `33333333
  147.     dw `33333333
  148.     dw `33322211
  149.     dw `33322211
  150.     dw `33322211
  151.     dw `33322211
  152.     dw `33322211
  153.     dw `33322211
  154.     dw `33322211
  155.     dw `33322211
  156.     dw `22222222
  157.     dw `20000000
  158.     dw `20111111
  159.     dw `20111111
  160.     dw `20111111
  161.     dw `20111111
  162.     dw `22222222
  163.     dw `33333333
  164.     dw `22222223
  165.     dw `00000023
  166.     dw `11111123
  167.     dw `11111123
  168.     dw `11111123
  169.     dw `11111123
  170.     dw `22222223
  171.     dw `33333333
  172.     dw `11222333
  173.     dw `11222333
  174.     dw `11222333
  175.     dw `11222333
  176.     dw `11222333
  177.     dw `11222333
  178.     dw `11222333
  179.     dw `11222333
  180.     dw `00000000
  181.     dw `00000000
  182.     dw `00000000
  183.     dw `00000000
  184.     dw `00000000
  185.     dw `00000000
  186.     dw `00000000
  187.     dw `00000000
  188.     dw `11001100
  189.     dw `11111111
  190.     dw `11111111
  191.     dw `21212121
  192.     dw `22222222
  193.     dw `22322232
  194.     dw `23232323
  195.     dw `33333333
  196.     ; Paste your logo here:
  197.         dw `33000000
  198.     dw `33000000
  199.     dw `33000000
  200.     dw `33000000
  201.     dw `33111100
  202.     dw `33111100
  203.     dw `33111111
  204.     dw `33111111
  205.     dw `33331111
  206.     dw `00331111
  207.     dw `00331111
  208.     dw `00331111
  209.     dw `00331111
  210.     dw `00331111
  211.     dw `11331111
  212.     dw `11331111
  213.     dw `11333300
  214.     dw `11113300
  215.     dw `11113300
  216.     dw `11113300
  217.     dw `11113311
  218.     dw `11113311
  219.     dw `11113311
  220.     dw `11113311
  221.     dw `00003333
  222.     dw `00000033
  223.     dw `00000033
  224.     dw `00000033
  225.     dw `11000033
  226.     dw `11000033
  227.     dw `11111133
  228.     dw `11111133
  229.     dw `33111111
  230.     dw `33111111
  231.     dw `33111111
  232.     dw `33111111
  233.     dw `33111111
  234.     dw `33111111
  235.     dw `33111111
  236.     dw `33111111
  237.     dw `11331111
  238.     dw `11331111
  239.     dw `11331111
  240.     dw `11331111
  241.     dw `11331111
  242.     dw `11331111
  243.     dw `11331111
  244.     dw `11331111
  245.     dw `11113311
  246.     dw `11113311
  247.     dw `11113311
  248.     dw `11113311
  249.     dw `11113311
  250.     dw `11113311
  251.     dw `11113311
  252.     dw `11113311
  253.     dw `11111133
  254.     dw `11111133
  255.     dw `11111133
  256.     dw `11111133
  257.     dw `11111133
  258.     dw `11111133
  259.     dw `11111133
  260.     dw `11111133
  261.     dw `33111111
  262.     dw `33111111
  263.     dw `33111111
  264.     dw `33111111
  265.     dw `33111111
  266.     dw `33111111
  267.     dw `33111111
  268.     dw `33111111
  269.     dw `11331111
  270.     dw `11331111
  271.     dw `11331111
  272.     dw `11331111
  273.     dw `11331111
  274.     dw `11331111
  275.     dw `11331111
  276.     dw `11331111
  277.     dw `11113311
  278.     dw `11113311
  279.     dw `11113311
  280.     dw `11113311
  281.     dw `11113311
  282.     dw `11113311
  283.     dw `11113311
  284.     dw `11113311
  285.     dw `11111133
  286.     dw `11111133
  287.     dw `11111133
  288.     dw `11111133
  289.     dw `11111133
  290.     dw `11111133
  291.     dw `11111133
  292.     dw `11111133
  293.     dw `33111111
  294.     dw `33111111
  295.     dw `33111111
  296.     dw `33111111
  297.     dw `33111111
  298.     dw `33111111
  299.     dw `33111111
  300.     dw `33111111
  301.     dw `11331111
  302.     dw `11331111
  303.     dw `11331111
  304.     dw `11331111
  305.     dw `11330000
  306.     dw `11330000
  307.     dw `11330000
  308.     dw `33330000
  309.     dw `11113311
  310.     dw `11113311
  311.     dw `00003311
  312.     dw `00003311
  313.     dw `00003311
  314.     dw `00003311
  315.     dw `00003311
  316.     dw `00333311
  317.     dw `11111133
  318.     dw `11111133
  319.     dw `11111133
  320.     dw `11111133
  321.     dw `11111133
  322.     dw `11111133
  323.     dw `11111133
  324.     dw `11113333
  325. TilesEnd:
  326.  
  327. Tilemap:
  328.     db $00, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $02, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  329.     db $04, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  330.     db $04, $08, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  331.     db $04, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  332.     db $04, $08, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  333.     db $04, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  334.     db $04, $08, $05, $06, $05, $06, $05, $06, $05, $06, $05, $06, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  335.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  336.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  337.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  338.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  339.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  340.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  341.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $0A, $0B, $0C, $0D, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  342.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $0E, $0F, $10, $11, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  343.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $12, $13, $14, $15, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  344.     db $04, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $07, $03, $16, $17, $18, $19, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  345.     db $04, $09, $09, $09, $09, $09, $09, $09, $09, $09, $09, $09, $09, $07, $03, $03, $03, $03, $03, $03, 0,0,0,0,0,0,0,0,0,0,0,0
  346. TilemapEnd:
  347.  
  348. Paddle:
  349.     dw `13333331
  350.     dw `30000003
  351.     dw `13333331
  352.     dw `00000000
  353.     dw `00000000
  354.     dw `00000000
  355.     dw `00000000
  356.     dw `00000000
  357. PaddleEnd:
  358.  
  359. SECTION "Counter", WRAM0
  360. wFrameCounter: db
  361.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement