(using my special port of FCE Ultra, MacFCEU,
sometimes whole mornings, trial and error)
Before you go any further, you should know that you are looking at content that enables you to cheat!
Addresses are in hexadecimal with '$' or '0x' prefixes, absolute (unsigned) by default.
Remember that 'H' and 'V', instead of 'X' and 'Y' represent on-screen coordinates; scanline
vertical coordinates run top-to-bottom, not center-up.
To change data in MacFCEU, use the debugger; type `sb <address> <bytes..>` into
the command line.
Address | Use |
---|---|
$18-1F | ror array (for random no. generation); (bit #1 of $19 eor’d with $00) != 0, is rotated in |
$2E | time (bonus), in BCD |
$44 | countdown to next screen |
$54 | zero-based level; incremented before Kong falls |
$55 | lives |
$58 | demo control of player |
$5E | active barrel motion array: #1=descending, down ladder, 8=falling (gravity), 16=bouncing, $80=appearing (from Kong), $C0=dropping, $C1=dropping, hit floor (restart velocity) |
$50E | demo replay index |
$AF | active ‘sparky’ motion array: #1=moving, $10=descending, $20=ascending |
The 2A03 version is so operationally close to the original Z80 arcade version that most or all of its bugs are carried over, including the timer bugs toward level 254 (the infamous kill screen). I’m not sure about this, though.
Address | Use |
---|---|
$E | game transition:
#1-bean stalk, fall, down pipe, run, completion, dead, start, #8-norm-1, input disable, norm-2, death, powerup disable (higher values will crash) |
.. | game object store |
$9F | player v-velocity |
$B5 | death sequence (#1=none) |
$CE | player v-position |
$F2 | song track-something |
$FB | game song (by bit) — single bit=start:
#0-above ground, sea, underground, fortress, #4-special, land-to-pipe, special-2, <silence> Code Addresses: stop, $9056; course-set, $9113; read: $8EA7 |
$FC | end song (by bit):
#0-death, game over, the end, world clear, #4-over, course clear, time running out, <silence> |
$FD | noise sfx (by bit):
#0-brick bash, fire breath..<silence> |
$FE | rectangle sfx-1 (by bit):
#0-coin, open box, unearth (bean stalk), explosion, #4-select, empower, one-up, fall |
$FF | rectangle sfx-2 (by bit):
#0-jump, fire ball hit, squish, pluck, #4-shrink/pipe, fire ball, flag, small jump |
$200..$2FF | sprite store;
#0 is used for sprite #0-hit: v:$18 i:$FF a:$23 h:$58 |
$300.. | playfield store? |
~$500.. | map store |
$6CD | some loader field |
$6E0.. | ?? |
$704 | in water |
$70B | growing |
$70E | hold vertical physics, scroll |
$70F | showing flag points |
$716 | pass-through |
$71A | map update pace? |
$71C | obj update pace? |
$71F..$721 | playfield update pace, sizes? |
$723 | no scroll updates |
$725..$72A | block map reference? |
$72E..$72F | block map lengths? |
$743 | in sky round (cloud blocks instead of bricks) |
$747 | animation/load stop time |
$74E | environment:
#0-water/hard, normal, normal-concealed, hard, sky/empty |
$753 | player index (controls), can be used to disable |
$754 | player’s small (can be incorrect in rare cases) |
$756 | player’s powerup:
#0-small, large, anything else is 'fire' |
$770 | mode: #0-off, game, lock..lock-up |
$772 | reset mode: #0-title, place, active |
$773 | environment key |
$774 | temporary-only: $00 |
$776 | paused |
$778 | CHR banks (master): $11 |
$779 | screen PPU-Control-1 (see docs.) |
$781 | map length key? |
$79E | flash time |
$79F | star time |
$7A0 | music regs |
$7C4 | music rate bitmask; #3=fast |
$7C5 | music set status |
$7C6 | sound disable |
$7DD | score (6 byte-coded decimal) |
$7ED | coins (2 byte-coded decimal) |
$7F8 | time (3 byte-coded decimal) |
Address | Use |
---|---|
$14 | world H |
$28 | world V |
$32 | player V - below screen kills |
$46 | player V velocity |
$AC | portal egg activation status (1=open) |
$CA | no sprites |
$CB | sprite world V |
$FC | playfield H |
$FD | playfield V |
$4B5 | portal activated |
$4C4 | POW shake (decremented) |
$4C5 | playfield scroll-V |
$4C6 | bomb flash (decremented) |
$4CB | world H shift |
$4E0 | invincibility (decremented, slowly) |
$4EC | staging:
#0-no change, begin, game over, end sequence, any other value initiates warp zone |
$600 | song start (by bit):
#0-over ground, pick player, under ground, danger, #4-star, dream land, final battle, intro |
$601 | DMC sfx (by bit):
#0-door open, drum-low, whew, uproot, #4-foe death, drum-high, foe pain, #7-player death (stopped immediately in death) |
$602 | rect-2 sfx (by bit):
#0-egg launch, door form, cherry grab, throw, #4-1up, NPC kill, clock tick, portal open |
$603 | music sequence (by bit):
#0-lotto win, white door, end-song, player death, #4-game over, portal open, lotto, silent |
$604 | rect-1 sfx (by bit):
#0-jump, climb, coin, shrink, #4-fall, enlarge any other value lets channel play out |
$605 | noise sfx (by bit):
#0-instrument (short), #1/2-shuttle/POW any other value silences channel |
$609 | defered song bits (DMC played w. #2 on) |
$60D | sfx sequence playing |
With UDLR, left+right causes the player to “moon walk.”
Address | Use |
---|---|
$14 | stage end |
$15 | game tile cycle (e.g., coins)-VBL incremented, apparently |
$16 | game (above scorebar) PPU-Control-1 (see docs.) |
$6C.. | some music control registers |
$75 | map Mario v-position |
$76 | map Luigi v-position |
$77 | map Mario h-position-high |
$78 | map Luigi h-position-high |
$79 | map Mario h-position-low |
$7A | map Luigi h-position-low |
$87 | player v-position-high (may not apply to falling ceilings) |
$90 | player game scroll |
$A2 | player v-position-low (may not apply to falling ceilings) |
$AB | player h-position |
$BD | player h-speed |
$ED | player current power up ($578 value-1) |
$3DD | run stat |
$3F2 | star |
$3F3 | map power-up (8=cloud) |
$461/$4F5 | game song init.:
#0-<no change>, World 1-8 #9-sky/world select, star, flute, harp(SMB theme) #13-return, trivia, the end $10-land...$20-night...$30-water $40-fortress...$50-fight...$60-ship... $70-duel...$80-special...$90-hills... $A0-switch...$B0-endgame...$C0-ship fight... $D0-all-in-one-land,$E0:dark,$F0:sea, evil,battle,ship,duel,special,hills,endgame,fight—<crash> |
$4F1 | jump sfx — bit #7 = small |
$4F2 | auto sfx, |
$4F3 | noise/triangle sfx |
$4F4 | break tune init. (by bit):
#0-congrats, died, start over, champ, win, #4-bowser fall, complete, time running out!, <empty> |
$4F6 | map sfx (by bit):
#0-appear, move, enter, inventory, special, <empty>... #7-fail |
$4F7 | pause bitmask |
$500 | map help balloon V |
$50F | map help balloon H |
$546 | player state bits:
#7-can slide (downhill) |
$551 | player grow |
$552 | player stun time |
$553 | player star time |
$554 | player poof time |
$555 | player flash time |
$556 | player stop time |
$557 | player kick (object) time |
$558 | player holding time |
$559 | complete (course) time — no mirror updates, passes right |
$55A | ship transition |
$55F | scene reset |
$561 | character reset (reloads characters, zeroes $566) |
$563 | player no ground |
$564 | obj count recreate |
$566 | map environment or transition:
#0-normal, flying fish, spiked fish (slow) #3-loading/transition value (resets to zero), #4-flying beetles (timing was done w. care as the player will hit the ceiling!), #5-passing clouds, passing stands (that fall when you stand on them), #7-special box (ends level when opening it), #8-loading/transition value (resets to zero), #9/10-reserved (crashes), #11-unknown, #12-reserved for card games (reserved), #13/14-reserved (crashes), #15-reserved (blanks screen, crashes) #16-rising (to coin heaven; can still fire/wag!) #17-22-reserved (crashes), #23-tile loading (messes up graphics w/o proper data) |
$567 | break tune time |
$56E | player fly time |
$56F | crouch |
$571 | teleport bitmask:
1-3: ender; <0-hold; 4-7: end; 8: to darkness (dies w/o proper loading); 14: value for entering pipe-down (until in); 15: up 16-23: to hills, "coming out of pipe" (20+ invalid in some cases) $82: leaving pipe-down (until out); $83-up |
$572 | sky transition |
$575 | swim efx |
$577 | has shoe — CHR must be loaded for it to look right |
$578 | powerup set:
|
$57C | last active block hit type (e.g., song block) |
$580 | game is floating (water level) |
$587 | behind end-zone |
$588 | time left in background (note that you must pass a special to win a flute) |
$58A | no fist (affects appearance in jumping) |
$597 | in boat (map, used; reset if on boat) |
$5EE | time (3 byte-decimal), negatives treated as carry |
$5F1 | timer decrement (per-VBL, apparently) |
$5F2 | map menu |
$5FC | ship game position |
$5FD | transition w/ king (Oh, it's terrible!) |
$6B6 | player obstruction bit:
#0: koopa-anchored (unable to jump high) |
$71A | bkgnd tile pattern offset (includes shadows) |
$715 | score (3 bytes MSB) |
$736 | lives |
$7C1 | palette (32 bytes) |
$7F0.. | sound regs |
$6000 | game block map |
$7964 | set to $5A; any other value resets the cart |
$7D80 | Mario power-up items:
#0=emtpy, mushroom, flower, leaf #4=frog, racoon, hammer bros., cloud #8=power tanuki, star, anchor, hammer #12=flute, song |
$7DA2 | Mario cash (auto one-up past 99) |
$7DA3 | Luigi power-up items |
$7DC5 | Luigi cash (auto one-up past 99) |
Address | Use |
---|---|
$10 | player H copy |
$12 | player-upper V copy |
$14 | player-lower V copy |
$16 | scroll-remaining - 16-bit; $0080 when in locker |
$1A/1C | player orientation bitmask |
$24 | hit data |
$26, $27 | scorebar scrolls v,h: $C0,$00 (in-game) |
$2A | counter from down-center $2B; bit #7 is off |
$2D | reset (by bit):
#0-text unrendered #3-map unrendered |
$31 | sprite environment:
#0-halls, cafeteria, gym, #5-classroom, chemistry, duct/roof, basement, shop, #10-library, spike/snake, weights, opening seqs., #15-elevator BG, building, select/title, spike/spine, #19-elevator/ghoul, spike/showers, spike/monkey, #22-spike/brainer, spike/reaper, spike/plant, spike/skull, #26-spike/classroom, spike/note, spike/ducts, spike/heart, #30-spike/janitor, spike/boiler |
$49 | physics flags (by bit):
#0-on floor, hit ceiling, #4-on dropable sufrace |
$6B | weapons not taken from map (boolean bytes) |
$81 | game state-setting to $FF ends game |
$204.. | player sprite data |
$300../$700-1F | map graphics |
$45E | current room ID |
$45F | room/menu switch
setting both $45E-F to $0101 kills player |
$460 | prev. room ID (old value) |
$4DA | player H |
$50A | player V |
$55A | player V velocity |
$6CA | song index:
#0-silence, halls, air, wild, #4-classroom, doomed(unused), library, phantom(basement), #8-music, chemistry, farewell, clock, #12-crawlspace; others crash bit #7=fast tempo, #5=alternate tempo ghosts in end-sequence only move when non-zero |
$6CB | weapon array, by type each:
#0-bat, towel, sandwich, deweytron, #4-digestaray, embalm fluid, sickle, gamma gun, #8-spinal tap; other make sprite garble, may crash |
$6D4 | shoe array: sneakers, springs, suction |
$6D7 | current shoes (in shoe array) |
$6D8 | current weapon (in weapon array) |
$6DE | weapons count |
$6DF | shoes count |
$6EE | mobility bitmask (updated airborne-wise):
#0-walk(no motion w/o turn), enter (doors), await move, drop, #4-jump, turn |
$7BB | (re)start music |
$7C0 | music variables |
Weapons appear to be worth 1,000 points in general. The Gamma Gun kills anything that moves, including the Medusa Head (although you can’t get back to the halls once you get the gun; without teleporting via $45E anyway…) and janitor’s mop.
Object | Vulnerables | Points |
---|---|---|
Reaper | all but likes of Dewytron | 0 |
Ghoul | all | 40/80 |
Gym Zombie | all | 50 |
Ghost | all | 100 |
Librarian | most | 100 |
Hall Zombie | all, but he is FAST! | 200 |
Sunflower | Sickle, Gamma | 300 |
Buzzer | Bat, Towel | 1000 |
Clock | Bat | 1000 |
Heart | most | 1000 |
Medusa | Gamma | 1000 |
Dead Body | not an NPC! | n/a |
Click here for a near-complete map of the game.
Disclaimer:
The authors of this content, and web host(s) disclaim all responsibility for any damages,
direct or indirect, that may occur in use of the information, software, etc. available
here.
Nintendo®, Nintendo Entertainment System® are a registered trademarks of Nintendo of America, Inc. ©1985-2010