116 lines
1.7 KiB
NASM
116 lines
1.7 KiB
NASM
INCLUDE "hardware.inc"
|
|
|
|
SECTION "Random", ROM0, ALIGN[4]
|
|
Random:
|
|
db -1, 1, 2, -1, 4, 3, -2, -1, -4, 3, -1, 5, 2
|
|
RandomEnd:
|
|
|
|
HaltAndClearIF: MACRO
|
|
halt
|
|
xor a
|
|
ld [rIF], a
|
|
ENDM
|
|
|
|
EXPORT ScrollNintendoOut
|
|
SECTION "Scroll Nintendo Out", ROM0
|
|
ScrollNintendoOut:
|
|
|
|
; wait a moment
|
|
ld b, 32
|
|
.wait
|
|
HaltAndClearIF
|
|
dec b
|
|
jr nz, .wait
|
|
|
|
; sound ON
|
|
ld a, $80
|
|
ldh [rNR52], a ; sound ON with noise channel
|
|
ld a, $77
|
|
ldh [rNR50], a ; max volume on both speakers
|
|
ld a, $88
|
|
ldh [rNR51], a ; noise channel on both speakers
|
|
|
|
; make noise
|
|
ld a, 0
|
|
ldh [rNR41], a ; set sound duration
|
|
ld a, $F0
|
|
ldh [rNR42], a ; set volume
|
|
ld a, $72
|
|
ldh [rNR43], a ; set frequency
|
|
ld a, $80
|
|
ldh [rNR44], a ; turn on
|
|
|
|
; nudge nintendo logo
|
|
ld d, HIGH(Random)
|
|
ld e, 0
|
|
ld b, 42
|
|
.noise
|
|
HaltAndClearIF
|
|
HaltAndClearIF
|
|
ld a, [de]
|
|
ldh [rSCY], a
|
|
|
|
inc e
|
|
ld a, e
|
|
cp a, RandomEnd - Random
|
|
jr nz, .next
|
|
ld e, 0
|
|
.next
|
|
|
|
ld a, [de]
|
|
ldh [rSCX], a
|
|
|
|
inc e
|
|
ld a, e
|
|
cp a, RandomEnd - Random
|
|
jr nz, .next2
|
|
ld e, 0
|
|
.next2
|
|
|
|
dec b
|
|
jr nz, .noise
|
|
|
|
xor a
|
|
ldh [rSCY], a
|
|
|
|
; change noise
|
|
ld a, $62
|
|
ldh [rNR43], a ; set frequency
|
|
|
|
ld b, 4 ; number of frames before reducing volume
|
|
ld c, 16 ; number of steps before volume is 0
|
|
|
|
; nintendo logo lift-off!
|
|
.scrollup
|
|
HaltAndClearIF
|
|
; scroll up
|
|
ldh a, [rSCY]
|
|
inc a
|
|
ldh [rSCY], a
|
|
|
|
; fade out
|
|
ld a, c
|
|
or a
|
|
jr z, .novolumechange
|
|
dec b
|
|
jr nz, .novolumechange
|
|
; decrement volume by 1
|
|
; see http://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware obscure behavior...
|
|
ld a, $08
|
|
REPT 15
|
|
ldh [rNR42], a
|
|
ENDR
|
|
ld b, 4
|
|
dec c
|
|
|
|
.novolumechange
|
|
; loop until nintendo logo is out of screen
|
|
ldh a, [rSCY]
|
|
cp a, 88
|
|
jp nz, .scrollup
|
|
|
|
; sound off
|
|
xor a
|
|
ldh [rNR52], a
|
|
|
|
ret |