| Level 0 | Level 1 | Level 2 | Level 3 | Level 4 |
| Level 5 | Level 6 | Level 7 | Level 8 | Level 9 |
| Level 10 | Level 11 | Level 12 | Level 13 | Level 14 |
| Level 15 | Level 16 | Level 17 | Level 18 | Level 19 |
Egypt is a puzzel game that gets rather hard at the end where it kicks you totally. This game also has Egypt sounding music and is rather cool sounding. This NSF is rather hard to rip, took me quite awhile to figure it out and the solution wasn't as hard as I thought. When you rip the NSF and find the right init and play addresses it crashes in some players and won't work in others. When you load the game up in a emulator and set a write for $4000 - $4009 and you end up seeing the writes to the sound registers in the WRAM area. The first thing you should check is if these memory addresses are being initialized in the init code and at the right time. So I shall show you the code here that is in the rom.
$01D8:8D 00 40 STA $4000 = #$FF $01DB:60 RTS
This code is used over and over again and the sound register address is changed a lot. 8D 00 40 the 00 byte is changed all the time and is updated in the play code thousands of times. You probally know by now that the init code initializes memory addresses and you need to trace the init code once you find it. I would check the sound registers first when you have them in the WRAM area and then go from there. In this case the sound registers are not being initialized and so you have to do them manually. So you need to make a loop to initialize these addresses. A countdown decrement loop might be best in this case. You should use the Y register and not the X register because the X register is used most often. Also you need to check the code to see that this routine doesnt mess anything else up by using the Y register. So here is the code to use and some data to go along with it.
FF70 48 PHA FF71 A0 04 LDY #04 FF73 B9 8CAD LDA AD8C,Y FF76 99 D701 STA 01D7,Y FF79 88 DEY FF7A D0 F7 BNE $FF73 FF7C 68 PLA FF7D 4C 6FB7 JMP B76F .db 60,40,00,8D
You can place the code wherever you want. However this is where I placed the code. And so this initializes the addresses and you can do this with other games as well that has register writes in WRAM. You can also initialize any other code that ends up here in WRAM in the same way. This is a simple level and so ends
here.