Speedy Gonzales:ROM map: Difference between revisions
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…') |
No edit summary |
||
Line 12: | Line 12: | ||
* <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 24 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) |
Revision as of 17:57, 5 October 2010
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)