76808
Mario Paint ZSNES ZST save state address definitions:
$15F7-$1836/$184F-$1A8E (Song data)
$1837-$1838/$1A8F-$1A90 (Scroll End Boundary Multiplier (Little Endian) 00=No Boundary 01=Shortest End FF=Longest End)
$1839-$1840/$1A91-$1A92 (Loop: 00=No Nonzero=Yes)
$183B/$1A93 (Tempo Slider Position (to the right)) (VISUAL ONLY)
$183C/$1A94 (Tempo Slider Position additional multiplier) (VISUAL ONLY)
$183D/$1A95 (???)
$183E/$1A96 (???)
$183F/$1A97 (???)
$1840/$1A98 (Tempo: 01=Slowest FF=Fastest 00=Pause)
$1841/$1A99 (???)
$1842/$1A9A (???)
$1843/$1A9B (???)
$1844/$1A9C (???)
$1845/$1A9D (Time Signature ($00 = 3/4 $01 = 4/4))
$1846/$1A9E (???)
$1847/$1A9F (???)
$1848/$1AA0 (???)
$1849/$1AA1 (???)
$184A/$1AA2 (???)
$184B/$1AA3 (???)
$184C/$1AA4 (???)
$184D/$1AA5 (???)
$184E/$1AA6 (???)
Mario Paint SNES9x 000 save state address definitions:
All above information is relative to the start address of $0115BF.
The SNES9x save state file is GZIP'd; decompress it.
rainwarrior plays his SNES ROMs here: "C:\Users\rainwarrior\Documents\play\emu\roms\snes\Mario Paint (Japan, USA).sfc"
Song Data Format:
6 byte song data stream offsets:
$00 = Channel 1 note
$01 = Channel 1 instrument
$02 = Channel 2 note
$03 = Channel 2 instrument
$04 = Channel 3 note
$05 = Channel 3 instrument
... repeat up to 96 times "legally" for 576 bytes.
NOTES/FREQUENCIES: B1 ($01) lowest -> G3 ($0D) highest
Highest w/o sharps/flats (other values leak into other notes/instruments and change relative icon vertical positioning in strange fashion)
INSTRUMENTS:
(Standard Instruments; all samples are monaural unless otherwise noted.)
Mario ($00) Xylophone
Toadstool ($01) Tom drum (sample is stereo; left-oriented.)
Yoshi ($02) Yoshi noise
Star ($03) Musicbox tine
Flower ($04) Trumpet
Gameboy ($05) Pulsewave
Dog ($06)
Cat ($07)
Pig ($08)
Swan ($09) Orchestra hit
Baby ($0A)
Plane ($0B) Cello
Boat ($0C) Conga drum ($01-$06 notes D2, F2, G2, A2, A#3, C3) Cymbals ($07-$0D C2, F2, B2, F3, A3, C4, F4) (samples are stereo; right-oriented.)
Car ($0D) Organ
Heart ($0E) Doublebass
(Unused Instruments)
Blank ($0F) SFX ($00 null, $01 crash (low), $02 click (high), $03 cuica, $04 groan, $05 squeak (low), $06-$0A clicks, $0B squeak (high), $0C crash (high), $0D click (need more research to note frequencies.))
Mario Hand ($10) Xylophone
Green Hand ($11) Tom drum
Yellow Point Hand ($12) Yoshi
No Passing Signs ($13) Musicbox tine
No Passing Signs ($14) Trumpet
Oval Pointer ($15) Pulsewave
Oval Pointer/No Passing ($16) Dog
No Passing ($17) Cat
Song End (Yellow) Icon ($18) Pig
Song End (Orange) Icon ($19) Orchestra Hit
Rockets ($1A) Baby
Rockets ($1B) Cello
Rockets ($1C) "Boat" Percussion
Rockets ($1D) Organ
Rockets ($1E) Doublebass
Rockets ($1F) SFX
($20-$7F are repeats of $00-$1F)
Sustain/No Instrument ($80-$FF) (Frequency settings ignored)
Summary: "Positive" values are instruments; and "negative" values are sustain/null.
Other notes:
Two instances of sequence data and song properties data for Undo Dog.
Display and function values are separate.
576 bytes standard sequence data (Mario Paint)
24 bytes of song properties data (Mario Paint)
Mario Paint SRAM file is compressed.
Extended song data starts to crash the player at around ZST $2A00.
ZSNES (current public version) does not save SRAM files properly.
BS Mario Paint versions use the control pad instead of the mouse.
SHO file notes:
offset # of bytes Function
----------------------------
$000 4 STRING 's','h','r','o', (denotes a SHO "ShroomPlayer" file)
$004 1 BYTE Version number (See "Version Notes")
$005 2 WORD Reserved
$007 32 STRING Song Title
$027 32 STRING Author Name
$047 32 STRING SHI (sample pack) filename. (Default: "default.shi")
$067 576 STRING (base) Song Data (See "Song Data Format")
$067 2 WORD (mariopantse) Song Length Value (Little endian $6100 min. $400B max.)
$069 1 BYTE (mariopantse) Song Loop ($00 = on $01 = off)
$06A 1 BYTE (mariopantse) Time Signature ($00 = 3/4 $01 = 4/4)
$06B 1 BYTE (mariopantse) Tempo ($00 = Slowest $9F Fastest)
$06C nnn STRING (mariopantse) Song Data (See "Song Data Format")
$2A7 1 BYTE (base) Tempo ($00 = Slowest $9F Fastest)
$2A8 1 BYTE (mariopants) Song Length ($01 = Shortest $60 = Longest)
$2A9 1 BYTE (mariopants) Song Loop ($00 = on $01 = off)
$2AA 1 BYTE (mariopants) Time Signature ($00 = 3/4 $01 = 4/4)
SHO Version Notes:
$01 = ShroomPlayer
Base version. ShroomPlayer ignores "MarioPants" features.
$02 = MarioPants
Adds features noted above.
$03 = MarioPantsE
Adds even more features noted above. Not compatible with "ShroomPlayer" or "MarioPants".
SHI file notes:
offset # of bytes Function
----------------------------
$000 4 STRING 's','h','r','i', (denotes a SHI "ShroomPlayer" sample pack file)
$004 1 BYTE Version number ($01)
$005 2 WORD Reserved
$007 32 STRING Sample Pack Name
$027 32 STRING Sample Pack Author
$047 9 STRING Reserved
$050 nnn STRING Sample Data
$15F7-$1836/$184F-$1A8E (Song data)
$1837-$1838/$1A8F-$1A90 (Scroll End Boundary Multiplier (Little Endian) 00=No Boundary 01=Shortest End FF=Longest End)
$1839-$1840/$1A91-$1A92 (Loop: 00=No Nonzero=Yes)
$183B/$1A93 (Tempo Slider Position (to the right)) (VISUAL ONLY)
$183C/$1A94 (Tempo Slider Position additional multiplier) (VISUAL ONLY)
$183D/$1A95 (???)
$183E/$1A96 (???)
$183F/$1A97 (???)
$1840/$1A98 (Tempo: 01=Slowest FF=Fastest 00=Pause)
$1841/$1A99 (???)
$1842/$1A9A (???)
$1843/$1A9B (???)
$1844/$1A9C (???)
$1845/$1A9D (Time Signature ($00 = 3/4 $01 = 4/4))
$1846/$1A9E (???)
$1847/$1A9F (???)
$1848/$1AA0 (???)
$1849/$1AA1 (???)
$184A/$1AA2 (???)
$184B/$1AA3 (???)
$184C/$1AA4 (???)
$184D/$1AA5 (???)
$184E/$1AA6 (???)
Mario Paint SNES9x 000 save state address definitions:
All above information is relative to the start address of $0115BF.
The SNES9x save state file is GZIP'd; decompress it.
rainwarrior plays his SNES ROMs here: "C:\Users\rainwarrior\Documents\play\emu\roms\snes\Mario Paint (Japan, USA).sfc"
Song Data Format:
6 byte song data stream offsets:
$00 = Channel 1 note
$01 = Channel 1 instrument
$02 = Channel 2 note
$03 = Channel 2 instrument
$04 = Channel 3 note
$05 = Channel 3 instrument
... repeat up to 96 times "legally" for 576 bytes.
NOTES/FREQUENCIES: B1 ($01) lowest -> G3 ($0D) highest
Highest w/o sharps/flats (other values leak into other notes/instruments and change relative icon vertical positioning in strange fashion)
INSTRUMENTS:
(Standard Instruments; all samples are monaural unless otherwise noted.)
Mario ($00) Xylophone
Toadstool ($01) Tom drum (sample is stereo; left-oriented.)
Yoshi ($02) Yoshi noise
Star ($03) Musicbox tine
Flower ($04) Trumpet
Gameboy ($05) Pulsewave
Dog ($06)
Cat ($07)
Pig ($08)
Swan ($09) Orchestra hit
Baby ($0A)
Plane ($0B) Cello
Boat ($0C) Conga drum ($01-$06 notes D2, F2, G2, A2, A#3, C3) Cymbals ($07-$0D C2, F2, B2, F3, A3, C4, F4) (samples are stereo; right-oriented.)
Car ($0D) Organ
Heart ($0E) Doublebass
(Unused Instruments)
Blank ($0F) SFX ($00 null, $01 crash (low), $02 click (high), $03 cuica, $04 groan, $05 squeak (low), $06-$0A clicks, $0B squeak (high), $0C crash (high), $0D click (need more research to note frequencies.))
Mario Hand ($10) Xylophone
Green Hand ($11) Tom drum
Yellow Point Hand ($12) Yoshi
No Passing Signs ($13) Musicbox tine
No Passing Signs ($14) Trumpet
Oval Pointer ($15) Pulsewave
Oval Pointer/No Passing ($16) Dog
No Passing ($17) Cat
Song End (Yellow) Icon ($18) Pig
Song End (Orange) Icon ($19) Orchestra Hit
Rockets ($1A) Baby
Rockets ($1B) Cello
Rockets ($1C) "Boat" Percussion
Rockets ($1D) Organ
Rockets ($1E) Doublebass
Rockets ($1F) SFX
($20-$7F are repeats of $00-$1F)
Sustain/No Instrument ($80-$FF) (Frequency settings ignored)
Summary: "Positive" values are instruments; and "negative" values are sustain/null.
Other notes:
Two instances of sequence data and song properties data for Undo Dog.
Display and function values are separate.
576 bytes standard sequence data (Mario Paint)
24 bytes of song properties data (Mario Paint)
Mario Paint SRAM file is compressed.
Extended song data starts to crash the player at around ZST $2A00.
ZSNES (current public version) does not save SRAM files properly.
BS Mario Paint versions use the control pad instead of the mouse.
SHO file notes:
offset # of bytes Function
----------------------------
$000 4 STRING 's','h','r','o', (denotes a SHO "ShroomPlayer" file)
$004 1 BYTE Version number (See "Version Notes")
$005 2 WORD Reserved
$007 32 STRING Song Title
$027 32 STRING Author Name
$047 32 STRING SHI (sample pack) filename. (Default: "default.shi")
$067 576 STRING (base) Song Data (See "Song Data Format")
$067 2 WORD (mariopantse) Song Length Value (Little endian $6100 min. $400B max.)
$069 1 BYTE (mariopantse) Song Loop ($00 = on $01 = off)
$06A 1 BYTE (mariopantse) Time Signature ($00 = 3/4 $01 = 4/4)
$06B 1 BYTE (mariopantse) Tempo ($00 = Slowest $9F Fastest)
$06C nnn STRING (mariopantse) Song Data (See "Song Data Format")
$2A7 1 BYTE (base) Tempo ($00 = Slowest $9F Fastest)
$2A8 1 BYTE (mariopants) Song Length ($01 = Shortest $60 = Longest)
$2A9 1 BYTE (mariopants) Song Loop ($00 = on $01 = off)
$2AA 1 BYTE (mariopants) Time Signature ($00 = 3/4 $01 = 4/4)
SHO Version Notes:
$01 = ShroomPlayer
Base version. ShroomPlayer ignores "MarioPants" features.
$02 = MarioPants
Adds features noted above.
$03 = MarioPantsE
Adds even more features noted above. Not compatible with "ShroomPlayer" or "MarioPants".
SHI file notes:
offset # of bytes Function
----------------------------
$000 4 STRING 's','h','r','i', (denotes a SHI "ShroomPlayer" sample pack file)
$004 1 BYTE Version number ($01)
$005 2 WORD Reserved
$007 32 STRING Sample Pack Name
$027 32 STRING Sample Pack Author
$047 9 STRING Reserved
$050 nnn STRING Sample Data