Speedy Gonzales/ROM map

From Data Crystal
Jump to navigation Jump to search

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 24 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)