aboutsummaryrefslogtreecommitdiff
path: root/music/load.gbasm
blob: 400fa1d30f98fb646fd273471afacd46bc69b3ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Load_Music:
	.LOAD_BANK_OF =_music_Test

	LD HL, ptr(=_music_Test+52)
	LD A, L
	ADD (HL)
	LD L, A
	LD A, H
	ADC $00
	LD H, A

	LD A, bank(=_music_Test)
	LD ($mem_current_vgm_pc), A
	LD A, H
	LD ($mem_current_vgm_pc+1), A
	LD A, L
	LD ($mem_current_vgm_pc+2), A
	RET

Inc_HL_Fix_Bank:
	PUSH AF
	INC HL
	LD A, H
	CP $80
	JR C, =.end
	SUB $40
	LD H, A

	LD A, $saved_rom_bank
	INC A
	DBG
	.CHANGE_BANK_TO_A

	.end:
	POP AF
	RET

Play_Music:
	LD A, ($mem_current_vgm_pc)
	.CHANGE_BANK_TO_A
	LD A, ($mem_current_vgm_pc+1)
	LD H, A
	LD A, ($mem_current_vgm_pc+2)
	LD L, A

	.next:
	LD A, (HL)
	DBG
	CALL =Inc_HL_Fix_Bank
	CP $b3
	JR NZ, =.set_register.end
	.set_register:
		LD A, (HL)
		CALL =Inc_HL_Fix_Bank
		ADD $10
		LD C, A
		LD A, (HL)
		CALL =Inc_HL_Fix_Bank
		LD (C), A
		JR =.next
	.set_register.end:

	CP $66
	JR Z, =Load_Music


	CP $62
	JR Z, =.panic.end
	CP $61
	JR NZ, =.the61thingy.end
	.the61thingy:
	CALL =Inc_HL_Fix_Bank
	CALL =Inc_HL_Fix_Bank
	JR =.panic.end
	.the61thingy.end:

	.panic:
		LD A, $saved_rom_bank
		DBG
		STOP
	.panic.end:

	LD A, H
	LD ($mem_current_vgm_pc+1), A
	LD A, L
	LD ($mem_current_vgm_pc+2), A
	LD A, $saved_rom_bank
	DBG
	LD ($mem_current_vgm_pc), A
	RET