Note that it also changes the level of the "closing gate" special event.
"level 1 music", however, has two problems in its current form:
(See the end of the post for a hack that seems to work!)
1. The current hack changes only this part: [1]
Code: Select all
seg005:02EB 83 3E AA 4C 00 cmp need_level1_music, 0
seg005:02F0 74 30 jz loc_6102
seg005:02F2 83 3E 9E 0F 01 cmp current_level, 1 ; Special event: music when crouching
seg005:02F7 75 29 jnz loc_6102
But the level number in this part should also be changed: [2]
Code: Select all
seg003:0041 83 7E 06 01 cmp [bp+level], 1 ; <-- here
seg003:0045 75 05 jnz loc_483C
seg003:0047 B8 01 00 mov ax, 1
seg003:004A EB 02 jmp short loc_483E
seg003:004C loc_483C:
seg003:004C 2B C0 sub ax, ax
seg003:004E loc_483E:
seg003:004E A3 AA 4C mov need_level1_music, ax
2. But even then, the music plays only if I start the game directly on the new level, using megahit.
That's because [2] is in init_game(), instead of play_level().
[Note: In the original game, the music plays only of you start directly on level 1, but not if you shift+L there from level 14.]
How to solve this?
The easiest way I found is to force the need_level1_music variable to be 1 always.
(We can do this without the danger of getting music on the wrong level, because the level number is re-checked in [1].)
That is: In [2], instead of changing the level number, just replace jnz with 2*NOP.
So what you need to do is: (in addition to what CusPoP currently does)
Search: 83 7E 06 01 75 05
Change: 75 05 to 90 90