Difference between revisions of "Speedy Gonzales:ROM map"

From Data Crystal
Jump to navigation Jump to search
(Created page with '== Game Passwords == * <tt>3EAE-3EB3</tt>: 35 38 37 35 35 35 ("587555": ICE ZONE) * <tt>3EB4</tt>: 00 (End of password) * <tt>3EB5-3EBA</tt>: 35 30 30 39 39 39 ("500999": MÉXICO…')
 
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
{{rommap|game=Speedy Gonzales}}
 
== Game Passwords ==
 
== Game Passwords ==
 
* <tt>3EAE-3EB3</tt>: 35 38 37 35 35 35 ("587555": ICE ZONE)
 
* <tt>3EAE-3EB3</tt>: 35 38 37 35 35 35 ("587555": ICE ZONE)
Line 12: Line 13:
 
* <tt>3ED1-3BD6</tt>: 35 32 32 34 37 32 ("522472": CHEESE ISLAND)
 
* <tt>3ED1-3BD6</tt>: 35 32 32 34 37 32 ("522472": CHEESE ISLAND)
 
* <tt>3ED7</tt>: 00 (End of password)
 
* <tt>3ED7</tt>: 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.
 +
<pre>
 +
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)

Latest revision as of 11:39, 29 March 2013

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)