Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
Boulder Dash (NES)/ROM map: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 76: | Line 76: | ||
* <tt>0x38BB = </tt>World 6-4 CHR Bank for Level Data | * <tt>0x38BB = </tt>World 6-4 CHR Bank for Level Data | ||
* <tt>0x38BC-0x38BD = </tt>World 6-4 Level Data Pointers | * <tt>0x38BC-0x38BD = </tt>World 6-4 Level Data Pointers | ||
==Disassembly== | |||
<pre> | |||
(This fragment of code compare the password type and the passwords of 24 levels of the game) | |||
00:A8BA:A9 00 LDA #$00 (A=$00) | |||
00:A8BC:85 67 STA $0067 = #$02 (Put $00 in $0067) | |||
00:A8BE:A5 67 LDA $0067 = #$02 (Load in A the value of $0067. A=$00) | |||
00:A8C0:0A ASL (Arithmetic Shift Left) | |||
00:A8C1:0A ASL (Arithmetic Shift Left) | |||
00:A8C2:0A ASL (Arithmetic Shift Left) | |||
00:A8C3:AA TAX (X=A) | |||
00:A8C4:A0 00 LDY #$00 (Y=$00=Counter) | |||
00:A8C6:B9 4D 00 LDA $004D,Y @ $004D = #$08 (Load in A the value of $004D+Y) | |||
00:A8C9:DD 27 A9 CMP $A927,X @ $A937 = #$08 (Compare this value with $A927+X=Password of level ) | |||
00:A8CC:D0 09 BNE $A8D7 (If not equal jump to $A8D7) | |||
00:A8CE:E8 INX (X=X+1) | |||
00:A8CF:C8 INY (Y=Y+1) | |||
00:A8D0:C0 06 CPY #$06 (Compare if Y=$06=number of letters of password) | |||
00:A8D2:90 F2 BCC $A8C6 (If not equal jump to address $A8C6 to compare other letter of password) | |||
00:A8D4:4C E2 A8 JMP $A8E2 (Jump to address $A8E2) | |||
00:A8D7:E6 67 INC $0067 = #$02 (Increment value of address $0067) | |||
00:A8D9:A5 67 LDA $0067 = #$02 (A=value in address $0067) | |||
00:A8DB:C9 18 CMP #$18 (Compare if A=$18=24 decimal=number of levels) | |||
00:A8DD:90 DF BCC $A8BE (If not equal jump to $A8BE to compare password typed and level password) | |||
....... | |||
</pre> | |||
<includeonly>[[Category:ROM maps]][[Category:Boulder Dash|ROM map]]</includeonly> | <includeonly>[[Category:ROM maps]][[Category:Boulder Dash|ROM map]]</includeonly> |
Revision as of 19:17, 28 October 2009
Addresses:
- 0x2773 = Rockford Palette Selection
- 0x2931-0x2938 = World 1 Password Data
- 0x2939-0x2940 = World 2 Password Data
- 0x2941-0x2948 = World 3 Password Data
- 0x2948-0x2950 = World 4 Password Data
- 0x2951-0x2958 = World 5 Password Data
- 0x2959-0x2960 = World 6 Password Data
- 0x2961-0x2968 = World 7 Password Data
- 0x2969-0x2970 = World 8 Password Data
- 0x2971-0x2978 = World 9 Password Data
- 0x2979-0x2980 = World 10 Password Data
- 0x2981-0x2988 = World 11 Password Data
- 0x2989-0x2990 = World 12 Password Data
- 0x2991-0x2998 = World 13 Password Data
- 0x2999-0x29A0 = World 14 Password Data
- 0x29A1-0x29A8 = World 15 Password Data
- 0x29A9-0x29B0 = World 16 Password Data
- 0x29B1-0x29B8 = World 17 Password Data
- 0x29B9-0x29C0 = World 18 Password Data
- 0x29C1-0x29C8 = World 19 Password Data
- 0x29C9-0x29D0 = World 20 Password Data
- 0x29D1-0x29D8 = World 21 Password Data
- 0x29D9-0x29E0 = World 22 Password Data
- 0x29E1-0x29E8 = World 23 Password Data
- 0x29E9-0x29F0 = World 24 Password Data
- 0x3876 = World 1-1 CHR Bank for Level Data
- 0x3877-0x3878 = World 1-1 Level Data Pointers
- 0x3879 = World 1-2 CHR Bank for Level Data
- 0x387A-0x387B = World 1-2 Level Data Pointers
- 0x387C = World 1-3 CHR Bank for Level Data
- 0x387D-0x387E = World 1-3 Level Data Pointers
- 0x387F = World 1-4 CHR Bank for Level Data
- 0x3880-0x3881 = World 1-4 Level Data Pointers
- 0x3882 = World 2-1 CHR Bank for Level Data
- 0x3883-0x3884 = World 2-1 Level Data Pointers
- 0x3885 = World 2-2 CHR Bank for Level Data
- 0x3886-0x3887 = World 2-2 Level Data Pointers
- 0x3888 = World 2-3 CHR Bank for Level Data
- 0x3889-0x388A = World 2-3 Level Data Pointers
- 0x388B = World 2-4 CHR Bank for Level Data
- 0x388C-0x388D = World 2-4 Level Data Pointers
- 0x388E = World 3-1 CHR Bank for Level Data
- 0x388F-0x3890 = World 3-1 Level Data Pointers
- 0x3891 = World 3-2 CHR Bank for Level Data
- 0x3892-0x3893 = World 3-2 Level Data Pointers
- 0x3894 = World 3-3 CHR Bank for Level Data
- 0x3895-0x3896 = World 3-3 Level Data Pointers
- 0x3897 = World 3-4 CHR Bank for Level Data
- 0x3898-0x3899 = World 3-4 Level Data Pointers
- 0x389A = World 4-1 CHR Bank for Level Data
- 0x389B-0x389C = World 4-1 Level Data Pointers
- 0x389D = World 4-2 CHR Bank for Level Data
- 0x389E-0x389F = World 4-2 Level Data Pointers
- 0x38A0 = World 4-3 CHR Bank for Level Data
- 0x38A1-0x38A2 = World 4-3 Level Data Pointers
- 0x38A3 = World 4-4 CHR Bank for Level Data
- 0x38A4-0x38A5 = World 4-4 Level Data Pointers
- 0x38A6 = World 5-1 CHR Bank for Level Data
- 0x38A7-0x38A8 = World 5-1 Level Data Pointers
- 0x38A9 = World 5-2 CHR Bank for Level Data
- 0x38AA-0x38AB = World 5-2 Level Data Pointers
- 0x38AC = World 5-3 CHR Bank for Level Data
- 0x38AD-0x38AE = World 5-3 Level Data Pointers
- 0x38AF = World 5-4 CHR Bank for Level Data
- 0x38B0-0x38B1 = World 5-4 Level Data Pointers
- 0x38B2 = World 6-1 CHR Bank for Level Data
- 0x38B3-0x38B4 = World 6-1 Level Data Pointers
- 0x38B5 = World 6-2 CHR Bank for Level Data
- 0x38B6-0x38B7 = World 6-2 Level Data Pointers
- 0x38B8 = World 6-3 CHR Bank for Level Data
- 0x38B9-0x38BA = World 6-3 Level Data Pointers
- 0x38BB = World 6-4 CHR Bank for Level Data
- 0x38BC-0x38BD = World 6-4 Level Data Pointers
Disassembly
(This fragment of code compare the password type and the passwords of 24 levels of the game) 00:A8BA:A9 00 LDA #$00 (A=$00) 00:A8BC:85 67 STA $0067 = #$02 (Put $00 in $0067) 00:A8BE:A5 67 LDA $0067 = #$02 (Load in A the value of $0067. A=$00) 00:A8C0:0A ASL (Arithmetic Shift Left) 00:A8C1:0A ASL (Arithmetic Shift Left) 00:A8C2:0A ASL (Arithmetic Shift Left) 00:A8C3:AA TAX (X=A) 00:A8C4:A0 00 LDY #$00 (Y=$00=Counter) 00:A8C6:B9 4D 00 LDA $004D,Y @ $004D = #$08 (Load in A the value of $004D+Y) 00:A8C9:DD 27 A9 CMP $A927,X @ $A937 = #$08 (Compare this value with $A927+X=Password of level ) 00:A8CC:D0 09 BNE $A8D7 (If not equal jump to $A8D7) 00:A8CE:E8 INX (X=X+1) 00:A8CF:C8 INY (Y=Y+1) 00:A8D0:C0 06 CPY #$06 (Compare if Y=$06=number of letters of password) 00:A8D2:90 F2 BCC $A8C6 (If not equal jump to address $A8C6 to compare other letter of password) 00:A8D4:4C E2 A8 JMP $A8E2 (Jump to address $A8E2) 00:A8D7:E6 67 INC $0067 = #$02 (Increment value of address $0067) 00:A8D9:A5 67 LDA $0067 = #$02 (A=value in address $0067) 00:A8DB:C9 18 CMP #$18 (Compare if A=$18=24 decimal=number of levels) 00:A8DD:90 DF BCC $A8BE (If not equal jump to $A8BE to compare password typed and level password) .......