init.asm 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. SoftReset::
  2. call StopAllSounds
  3. call GBPalWhiteOut
  4. ld c, 32
  5. call DelayFrames
  6. ; fallthrough
  7. Init::
  8. ; Program init.
  9. rLCDC_DEFAULT EQU %11100011
  10. ; * LCD enabled
  11. ; * Window tile map at $9C00
  12. ; * Window display enabled
  13. ; * BG and window tile data at $8800
  14. ; * BG tile map at $9800
  15. ; * 8x8 OBJ size
  16. ; * OBJ display enabled
  17. ; * BG display enabled
  18. di
  19. xor a
  20. ld [rIF], a
  21. ld [rIE], a
  22. ld [rSCX], a
  23. ld [rSCY], a
  24. ld [rSB], a
  25. ld [rSC], a
  26. ld [rWX], a
  27. ld [rWY], a
  28. ld [rTMA], a
  29. ld [rTAC], a
  30. ld [rBGP], a
  31. ld [rOBP0], a
  32. ld [rOBP1], a
  33. ld a, rLCDC_ENABLE_MASK
  34. ld [rLCDC], a
  35. call DisableLCD
  36. ld sp, wStack
  37. ld hl, $c000 ; start of WRAM
  38. ld bc, $2000 ; size of WRAM
  39. .loop
  40. ld [hl], 0
  41. inc hl
  42. dec bc
  43. ld a, b
  44. or c
  45. jr nz, .loop
  46. call ClearVram
  47. ld hl, $ff80
  48. ld bc, $ffff - $ff80
  49. call FillMemory
  50. call ClearSprites
  51. ld a, Bank(WriteDMACodeToHRAM)
  52. ld [H_LOADEDROMBANK], a
  53. ld [MBC1RomBank], a
  54. call WriteDMACodeToHRAM
  55. xor a
  56. ld [hTilesetType], a
  57. ld [rSTAT], a
  58. ld [hSCX], a
  59. ld [hSCY], a
  60. ld [rIF], a
  61. ld a, 1 << VBLANK + 1 << TIMER + 1 << SERIAL
  62. ld [rIE], a
  63. ld a, 144 ; move the window off-screen
  64. ld [hWY], a
  65. ld [rWY], a
  66. ld a, 7
  67. ld [rWX], a
  68. ld a, CONNECTION_NOT_ESTABLISHED
  69. ld [hSerialConnectionStatus], a
  70. ld h, vBGMap0 / $100
  71. call ClearBgMap
  72. ld h, vBGMap1 / $100
  73. call ClearBgMap
  74. ld a, rLCDC_DEFAULT
  75. ld [rLCDC], a
  76. ld a, 16
  77. ld [hSoftReset], a
  78. call StopAllSounds
  79. ei
  80. predef LoadSGB
  81. ld a, BANK(SFX_Shooting_Star)
  82. ld [wAudioROMBank], a
  83. ld [wAudioSavedROMBank], a
  84. ld a, $9c
  85. ld [H_AUTOBGTRANSFERDEST + 1], a
  86. xor a
  87. ld [H_AUTOBGTRANSFERDEST], a
  88. dec a
  89. ld [wUpdateSpritesEnabled], a
  90. predef PlayIntro
  91. call DisableLCD
  92. call ClearVram
  93. call GBPalNormal
  94. call ClearSprites
  95. ld a, rLCDC_DEFAULT
  96. ld [rLCDC], a
  97. jp SetDefaultNamesBeforeTitlescreen
  98. ClearVram:
  99. ld hl, $8000
  100. ld bc, $2000
  101. xor a
  102. jp FillMemory
  103. StopAllSounds::
  104. ld a, BANK(Audio1_UpdateMusic)
  105. ld [wAudioROMBank], a
  106. ld [wAudioSavedROMBank], a
  107. xor a
  108. ld [wAudioFadeOutControl], a
  109. ld [wNewSoundID], a
  110. ld [wLastMusicSoundID], a
  111. dec a
  112. jp PlaySound