sprite animation testing
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
2.6KB

  1. ;----------------
  2. ; Program Start
  3. ;----------------
  4. INCLUDE "src/actor.asm"
  5. SECTION "Program Start", ROM0[$150]
  6. Start:
  7. ld a, IEF_VBLANK
  8. ld [rIE], a
  9. ei
  10. xor a
  11. ld [hVBlankFlag], a
  12. call Wait_VBlank
  13. xor a
  14. ldh [rLCDC], a
  15. call Clear_Map
  16. call Clear_OAM
  17. call Load_Tiles
  18. call Load_Map
  19. ld a, %11100100
  20. ld [rBGP], a
  21. ld [rOBP0], a
  22. ld a, %11000100
  23. ld [rOBP1], a
  24. xor a
  25. ld [rSCY], a
  26. ld [rSCX], a
  27. ld [rNR52], a
  28. call CopyDMARoutine
  29. ld a, $3F
  30. ld [Player_YPos], a
  31. ld a, $3A
  32. ld [Player_XPos], a
  33. ld a, $FF
  34. ld [Player_GFXCounter], a
  35. ld a, 1
  36. ld [Player_GFXState], a
  37. xor a
  38. ld [Player_TileData], a
  39. ld a, HIGH(ActorROM)
  40. ld [Player_GFXData+1], a
  41. ld a, LOW(ActorROM)
  42. ld [Player_GFXData], a
  43. ld a, $71
  44. ld [NPC01_YPos], a
  45. ld a, $8C
  46. ld [NPC01_XPos], a
  47. ld a, 20
  48. ld [NPC01_GFXCounter], a
  49. ld a, 1
  50. ld [NPC01_GFXState], a
  51. xor a
  52. ld [NPC01_TileData], a
  53. ld a, HIGH(ActorROM)
  54. ld [NPC01_GFXData+1], a
  55. ld a, LOW(ActorROM)
  56. ld [NPC01_GFXData], a
  57. ld a, $15
  58. ld [NPC02_YPos], a
  59. ld a, $1C
  60. ld [NPC02_XPos], a
  61. ld a, 30
  62. ld [NPC02_GFXCounter], a
  63. ld a, 1
  64. ld [NPC02_GFXState], a
  65. xor a
  66. ld [NPC02_TileData], a
  67. ld a, HIGH(ActorROM)
  68. ld [NPC02_GFXData+1], a
  69. ld a, LOW(ActorROM)
  70. ld [NPC02_GFXData], a
  71. ld a, $29
  72. ld [NPC03_YPos], a
  73. ld a, $90
  74. ld [NPC03_XPos], a
  75. ld a, 40
  76. ld [NPC03_GFXCounter], a
  77. ld a, 1
  78. ld [NPC03_GFXState], a
  79. xor a
  80. ld [NPC03_TileData], a
  81. ld a, HIGH(ActorROM)
  82. ld [NPC03_GFXData+1], a
  83. ld a, LOW(ActorROM)
  84. ld [NPC03_GFXData], a
  85. ld a, $71
  86. ld [NPC04_YPos], a
  87. ld a, $4F
  88. ld [NPC04_XPos], a
  89. ld a, 50
  90. ld [NPC04_GFXCounter], a
  91. ld a, 1
  92. ld [NPC04_GFXState], a
  93. xor a
  94. ld [NPC04_TileData], a
  95. ld a, HIGH(ActorROM)
  96. ld [NPC04_GFXData+1], a
  97. ld a, LOW(ActorROM)
  98. ld [NPC04_GFXData], a
  99. ld a, $4A
  100. ld [NPC05_YPos], a
  101. ld a, $67
  102. ld [NPC05_XPos], a
  103. ld a, $FF
  104. ld [NPC05_GFXCounter], a
  105. ld a, 1
  106. ld [NPC05_GFXState], a
  107. xor a
  108. ld [NPC05_TileData], a
  109. ld a, HIGH(ActorROM)
  110. ld [NPC05_GFXData+1], a
  111. ld a, LOW(ActorROM)
  112. ld [NPC05_GFXData], a
  113. ld a, LCDCF_ON | LCDCF_OBJON | LCDCF_BGON
  114. ld [rLCDC], a
  115. game_loop:
  116. call Hide_OAM
  117. call Read_Pad
  118. call PC_Update
  119. ld de, wShadowOAM
  120. ld hl, Player
  121. call RenderActor
  122. ld hl, NPC01
  123. call RenderActor
  124. ld hl, NPC02
  125. call RenderActor
  126. ld hl, NPC03
  127. call RenderActor
  128. ld hl, NPC04
  129. call RenderActor
  130. ld hl, NPC05
  131. call RenderActor
  132. call Wait_VBlank
  133. ld a, HIGH(wShadowOAM)
  134. call hOAMDMA
  135. jr game_loop