If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Speedy Gonzales/ROM map
Jump to navigation
Jump to search
The following article is a ROM map for Speedy Gonzales.
Game Passwords
- 3EAE-3EB3: 35 38 37 35 35 35 ("587555": ICE ZONE)
- 3EB4: 00 (End of password)
- 3EB5-3EBA: 35 30 30 39 39 39 ("500999": MÉXICO ZONE)
- 3EBB: 00 (End of password)
- 3EBC-3BC1: 33 34 33 30 30 33 ("343003": FOREST ZONE)
- 3EC2: 00 (End of password)
- 3EB3-3BC8: 38 33 30 36 33 37 ("830637": DESERT ZONE)
- 3EC9: 00 (End of password)
- 3ECA-3BCF: 38 31 32 31 37 31 ("812171": COUNTRY ZONE)
- 3ED0: 00 (End of password)
- 3ED1-3BD6: 35 32 32 34 37 32 ("522472": CHEESE ISLAND)
- 3ED7: 00 (End of password)
Disassembly
Password Comparison Routine
This fragment of code compares the input password with the passwords of all 6 levels of the game.
0C:6442 21 AE 3E ld hl,$3EAE (Load address $00:3EAE in hl, where are the passwords of the game) 0C:6445 06 06 ld b,$06 (B=$06 = Number of passwords in ROM) 0C:6447 C5 push bc (Push bc. Stores the value of bc) 0C:6448 E5 push hl (Push hl. Stores the value of hl) 0C:6449 11 AC DF ld de,$DFAC (Load address $DFAC=First Digit of password in de) 0C:644C 06 06 ld b,$06 (B=$06 = Number of digits in password) 0C:644E 1A ld a,[de] (A=Value in Address de=Introduced password) 0C:644F BE cp a,[hl] (Compare this value with value in address hl=Password in ROM) 0C:6450 20 15 jr nz,$6467 (If not zero goto address 0C:6467 to compare with other password list in the ROM) 0C:6452 13 inc de (Increases de) 0C:6453 23 inc hl (Increases hl) 0C:6454 05 dec b (Decreases b) 0C:6455 20 F7 jr nz,$644E (If b not zero goto adress 0C:644E to compare other digit) 0C:6457 E1 pop hl (Pop hl. Recovers the value of hl) 0C:6458 C1 pop bc (Pop bc. Recovers the value of bc) 0C:6459 3E 06 ld a,$06 (a=$06) 0C:645B 90 sub b (Decrease b) 0C:645C EA 83 DF ld [$DF83],a (Put the value of A if is correct in RAM Address $DF83=Level) 0C:645F B7 or a,a (a or a) 0C:6460 C0 ret nz (Return if not zero) 0C:6461 3E 05 ld a,$05 (a=$05) 0C:6463 EA B8 DF ld [$DFB8],a (Put the value of A in RAM Address $DFB8) 0C:6466 C9 ret (Return)
0C:6467 E1 pop hl (Pop hl. Recovers the value of hl) 0C:6468 C1 pop bc (Pop bc. Recovers the value of bc) 0C:6469 11 07 00 ld de,$0007 (de=$0007=Quantity to add to hl to move to the next password in the list) 0C:646C 19 add hl,de (hl=hl+de=hl+$0007) 0C:646D 05 dec b (Decreasee b=number of passwords that are by comparison) 0C:646E 20 D7 jr nz,$6447 (Jump if not zero to address $ 0C: 6447) 0C:6470 C9 ret (Return)