Title: Random things about Satellaview
Description: Discoveries inside !
LuigiBlood - July 30, 2010 11:13 PM (GMT)
Well, i decided to see how the BS-X ROM worked, and i do hacks in the interesting places to see if something interesting happens.
Let me talk about unreleased things.
BS-X supports up to 32M Data Pack.
No joke.
Proof :

(Mario ExciteBike 4 in one Data Cart !)
I made a 32M Data ROM for BS-X, this screen is taken from bsnes.
But unfortunately, it can only start the first game.
I had to do a little hack on the BS-X to make this working.
But it could work for real, if you can make a 32M Data Pack with inside info saying to the BS-X : "It's a 32M Data Cart, read it all !"
Well, you want technical explaination ?
Here it is :
First of all, the Data Pack is directly accessible from the software.
32M of Data directly accessible.
But the BS-X actually CAN make use of all, but the Data Pack must give informations to the BS-X.
Here's a disassembly of the Data Pack Header Info Reading process :
| CODE |
00/C1F2: AF 00 FF C0 LDA $C0FF00 00/C1F6: 8F D6 99 7E STA $7E99D6 00/C1FA: AF 02 FF C0 LDA $C0FF02 00/C1FE: 8F D7 99 7E STA $7E99D7 00/C202: AF 04 FF C0 LDA $C0FF04 00/C206: 8F D8 99 7E STA $7E99D8 00/C20A: AF 06 FF C0 LDA $C0FF06 00/C20E: 8F D9 99 7E STA $7E99D9 00/C212: AF 08 FF C0 LDA $C0FF08 00/C216: 8F DA 99 7E STA $7E99DA 00/C21A: AF 0A FF C0 LDA $C0FF0A 00/C21E: 8F DB 99 7E STA $7E99DB 00/C222: AF 0C FF C0 LDA $C0FF0C 00/C226: 8F DC 99 7E STA $7E99DC 00/C22A: AF 0E FF C0 LDA $C0FF0E 00/C22E: 8F DD 99 7E STA $7E99DD 00/C232: AF 10 FF C0 LDA $C0FF10 00/C236: 8F DE 99 7E STA $7E99DE 00/C23A: AF 12 FF C0 LDA $C0FF12 00/C23E: 8F DF 99 7E STA $7E99DF |
It reads bytes that the Data Pack is actually giving, DON'T EVEN TRY TO SEARCH FOR THEM IN BS ROMS. They are not there.
But what we are interested the most, is this :
| CODE |
| 00/C20A: AF 06 FF C0 LDA $C0FF06 |
What is that ? It's the reading process of the Size Byte.
It's the 7th byte in the Header Info of the Data Cart.
bsnes actually forces the Header Info to have 8M.
So i had to hack the ROM to see how it can work.
I changed this :
| CODE |
| 00/C20A: AF 06 FF C0 LDA $C0FF06 |
TO :
| CODE |
00/C20A: A9 2C LDA #$2C 00/C20C EA NOP 00/C20D EA NOP |
Instead of reading the Size Info byte, i did fake it by instead loading another byte.
How that Size Data works :
Let's see "2C" in detail :
$2C = %00101100
Here's what is needed to closely watch :
$2C = %00101100
It's the Size Info.
By changing it, you can make it :
000 = 2M Data Cart
001 = 4M Data Cart
010 = 8M Data Cart
011 = 16M Data Cart
100 = 32M Data Cart
I don't try to do more, because i don't think it would be good, as 32M is the REAL limit.
I don't know the use of the other Info bytes.
Well, this is it. It was long to write, but i'm happy.
Con - July 31, 2010 08:37 AM (GMT)
that might be interesting for mottzilla's real hardware project.
For emulation sram save place is not imprortant, I think tq,fq and restoration use even 64 k saveplace (I also enlarged it once). For rh emulation, there is of course problem how big the sram in the rom is.
LuigiBlood - July 31, 2010 02:55 PM (GMT)
Apparently, this is the [strike]Channel Number request[/strike] (?) :
| CODE |
00/C2AD: A9 01 LDA #$01 00/C2AF: 8D 94 21 STA $2194 00/C2B2: A9 AA LDA #$AA 00/C2B4: 8D 88 21 STA $2188 00/C2B7: CD 88 21 CMP $2188 00/C2BA: D0 22 BNE $C2DE 00/C2BC: A9 55 LDA #$55 00/C2BE: 8D 88 21 STA $2188 00/C2C1: CD 88 21 CMP $2188 00/C2C4: D0 18 BNE $C2DE 00/C2C6: 9C 88 21 STZ $2188 00/C2C9: 9C 89 21 STZ $2189 00/C2CC: 9C 8E 21 STZ $218E 00/C2CF: 9C 8F 21 STZ $218F 00/C2D2: AD 88 21 LDA $2188 00/C2D5: 0D 89 21 ORA $2189 00/C2D8: 0D 8E 21 ORA $218E 00/C2DB: 0D 8F 21 ORA $218F 00/C2DE: 6B RTL |
[strike]From what i see, it gets the Channel Number via the register $2188.[/strike][/strike]
No, it's something else, and most of all, it's used to get some signal, but what signal ? It's even only used one time.
LuigiBlood - July 31, 2010 08:51 PM (GMT)
Ok, i know what's this code.
It's a check on the Hardware.
I did a hack of this code, it did a "01" in the bottom right. And a message says a little later "There's no signal."
Without the hack, on bsnes, and the Hardware emulation, the message "There's no signal." appeared much later than with the "01".
I actually tested on bsnes, with the original BS-X ROM, and removed the "Satellaview" Addon via the Config.
"01" appears.
Remember this ?https://docs.google.com/Doc?docid=0AQ4eABCh...3ZzM4Z2Mz&hl=enWell, it suddenly makes sense. "01" appears if there's no Satellaview hardware connected. Like in the message with the Error Code 01-01.
Vehiek - August 1, 2010 06:20 AM (GMT)
| QUOTE (LuigiBlood @ Jul 31 2010, 12:51 PM) |
| Well, it suddenly makes sense. "01" appears if there's no Satellaview hardware connected. Like in the message with the Error Code 01-01. |
So that's why the number appears and what it's for...
I've tried several times in the past to find things about how the BIOS reads the signals, but I haven't gotten much out of it. It'd probably help if we knew how the registers were affected by the modem when it was operational.
LuigiBlood - August 1, 2010 01:07 PM (GMT)
| CODE |
00/C2E8: E2 20 SEP #$20 ;Set Accumulator 8-bits 00/C2EA: AD 96 21 LDA $2196 ;Read Register $2196 00/C2ED: 29 02 AND #$02 ;A AND #$02 00/C2EF: 6B RTL ;Return |
I did a hack of this code, and seems to do a "02" in the Bottom right.
Error "02" is about the Bitstream Cable, is the register $2196 a Data Reciever ?
EDIT : It's not a Data Reciever. Or else it would be used more than one time in the ROM.
The register must not give a byte with :
%00000000
This bit must be 0 or Error 02 is given.
LuigiBlood - August 3, 2010 11:22 AM (GMT)
Here's the SRAM Checksum Code :
| CODE |
80/C9AA: 08 PHP 80/C9AB: C230 REP #$30 80/C9AD: A90000 LDA #$0000 80/C9B0: 8F045010 STA $105004 80/C9B4: 3A DEC A 80/C9B5: 8F025010 STA $105002 80/C9B9: 9C0000 STZ $0000 80/C9BC: A2FF0F LDX #$0FFF 80/C9BF: BF005010 LDA $105000,X 80/C9C3: 29FF00 AND #$00FF 80/C9C6: 18 CLC 80/C9C7: 6500 ADC $00 80/C9C9: 8500 STA $00 80/C9CB: BF005011 LDA $115000,X 80/C9CF: 29FF00 AND #$00FF 80/C9D2: 18 CLC 80/C9D3: 6500 ADC $00 80/C9D5: 8500 STA $00 80/C9D7: BF005012 LDA $125000,X 80/C9DB: 29FF00 AND #$00FF 80/C9DE: 18 CLC 80/C9DF: 6500 ADC $00 80/C9E1: 8500 STA $00 80/C9E3: CA DEX 80/C9E4: 10D9 BPL $C9BF 80/C9E6: 8F045010 STA $105004 80/C9EA: 49FFFF EOR #$FFFF 80/C9ED: 8F025010 STA $105002 80/C9F1: 28 PLP 80/C9F2: 221BCA80 JSR $80CA1B 80/C9F6: 6B RTL |
The Checksum works like this :
It sums all the bytes in the SRAM.
LuigiBlood - August 3, 2010 01:51 PM (GMT)
Here's a little program i did :
BS-X SRAM Checksum Fixer 0.2 :
Usage :
CHKFIX.py [-f] <SRAM File>
-f = Fix Checksum.
Source Code (Uses Python Programming Language) :
| CODE |
from struct import * import sys print "BS-X SRAM Checksum Fixer v0.2" print "By LuigiBlood/Seru-kun"
#12287 if sys.argv[1] == "-f" and sys.argv[2] <> "" : FILE = sys.argv[2] elif sys.argv[1] <> "-f" and sys.argv[1] <> "" : FILE = sys.argv[1]
if FILE <> "" and sys.argv[1] == FILE : SRAM = open(FILE,"r+b") CHK = 0 CHK2 = 0 OFFSET = int("2fff", 16) SRAM.seek(4) OLD=ord(SRAM.read(1))+ord(SRAM.read(1))*256 print "Checksum : " + hex(OLD) SRAM.seek(2) OLDR=ord(SRAM.read(1))+ord(SRAM.read(1))*256 print "Reversed Checksum : " + hex(OLDR) elif FILE <> "" and sys.argv[1] == "-f" and sys.argv[2] == FILE : SRAM = open(FILE,"r+b") CHK = 0 CHK2 = 0 A = 0 OFFSET = int("fff", 16) SRAM.seek(4) OLD=ord(SRAM.read(1))+ord(SRAM.read(1))*256 print "Checksum : " + hex(OLD) SRAM.seek(2) OLDR=ord(SRAM.read(1))+ord(SRAM.read(1))*256 print "Reversed Checksum : " + hex(OLDR) SRAM.seek(2) SRAM.write(chr(255)) SRAM.write(chr(255)) SRAM.write(chr(0)) SRAM.write(chr(0)) print "Checksum Removed, calculating..." while OFFSET >= 0: SRAM.seek(OFFSET) A = ord(SRAM.read(1)) A += CHK CHK = A SRAM.seek(OFFSET + int("1000", 16)) A = ord(SRAM.read(1)) A += CHK CHK = A SRAM.seek(OFFSET + int("2000", 16)) A = ord(SRAM.read(1)) A += CHK CHK = A OFFSET -= 1
SRAM.seek(2) CHK2 = CHK & int("ffff", 16) print "NEW Checksum : " + hex(CHK2) RCHK = CHK2 ^ int("ffff", 16) print "NEW Reversed Checksum : " + hex(RCHK) print "Replacing Checksums..." SRAM.write(pack("H", RCHK)) SRAM.write(pack("H", CHK2)) print "Done !"
|
LuigiBlood - August 3, 2010 07:34 PM (GMT)
Here's some infos from the wiki :
This is the SRAM Map. Everything is Little Endian, unless is said so.
Offset - Size (Bytes) - Description
$0000 - 2 - Always $4753
$0002 - 2 - Reversed Checksum
$0004 - 2 - Checksum
$0006 - 20 - Name (Shift-JIS)
$001C - 2 - Gender (0 = Boy, more than 0 = Girl)
$001E - 6 - Money
$0024 - 2 - Number of Items
LuigiBlood - August 3, 2010 10:03 PM (GMT)
Do you want items ?
Check here :
http://wiki.superfamicom.org/snes/show/Satellaview+SRAM+Info$0026 - ? - Items
How to get Items ? It’s a Pointer. Point it to a Item Name, and it will recognize it. Each pointer does 3 bytes, and needs to be pointed at the Memory Map. It’s little endian, and also, before the pointer, a $00 is needed. I don’t know why. Or just copy what’s on the list :
| CODE |
Pointer - Item 0029C288 - Transfer Device 00B8C288 - Telephone Card (5) ... |
Why i didn't continue the list ?
I DON'T KNOW JAPANESE !!
Vehiek - August 4, 2010 04:04 AM (GMT)
| QUOTE (LuigiBlood @ Aug 3 2010, 02:03 PM) |
Why i didn't continue the list ? I DON'T KNOW JAPANESE !! |
LuigiBlood - September 13, 2010 07:43 PM (GMT)
Something got me into my eye, i don't know what, but it gets more interesting...
| CODE |
80c30e lda $218a [80218a] A:fe00 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIZC V:237 H:1046 80c311 sta $143d [80143d] A:fe00 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIZC V:237 H:1076 80c314 beq $c34f [80c34f] A:fe00 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIZC V:237 H:1108 |
From the Trace Log, while trying to get a signal.
I tried to change the loaded value to #$FF, it's the same thing.
But #$7F...
| CODE |
80c30e lda #$7f A:0100 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIZC V:239 H: 648 80c310 nop A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 664 80c311 sta $143d [80143d] A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 678 80c314 beq $c34f [80c34f] A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 710 80c316 bmi $c350 [80c350] A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 726 80c318 cmp #$14 A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 742 80c31a bcc $c31e [80c31e] A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 758 80c31c lda #$14 A:017f X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 774 80c31e sta $143d [80143d] A:0114 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 790 80c321 sta $47 [000047] A:0114 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 822 80c323 stz $48 [000048] A:0114 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 846 80c325 stz $143c [80143c] A:0114 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 870 80c328 ldx #$0000 A:0114 X:0006 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 902 80c32b lda $218b [80218b] A:0114 X:0000 Y:0000 S:1e78 D:0000 DB:80 nvMxdIZC V:239 H: 926 80c32e sta $7e9a20,x [7e9a20] A:0121 X:0000 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 956 80c332 inx A:0121 X:0000 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H: 996 80c333 cpx $47 [000047] A:0121 X:0001 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzC V:239 H:1010 80c335 bne $c32b [80c32b] A:0121 X:0001 Y:0000 S:1e78 D:0000 DB:80 NvMxdIzc V:239 H:1042 80c32b lda $218b [80218b] A:0121 X:0001 Y:0000 S:1e78 D:0000 DB:80 NvMxdIzc V:239 H:1064 80c32e sta $7e9a20,x [7e9a21] A:0121 X:0001 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzc V:239 H:1094 80c332 inx A:0121 X:0001 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzc V:239 H:1134 80c333 cpx $47 [000047] A:0121 X:0002 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzc V:239 H:1148 80c335 bne $c32b [80c32b] A:0121 X:0002 Y:0000 S:1e78 D:0000 DB:80 NvMxdIzc V:239 H:1180 80c32b lda $218b [80218b] A:0121 X:0002 Y:0000 S:1e78 D:0000 DB:80 NvMxdIzc V:239 H:1202 80c32e sta $7e9a20,x [7e9a22] A:0121 X:0002 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzc V:239 H:1232 80c332 inx A:0121 X:0002 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzc V:239 H:1272 80c333 cpx $47 [000047] A:0121 X:0003 Y:0000 S:1e78 D:0000 DB:80 nvMxdIzc V:239 H:1286 80c335 bne $c32b [80c32b] A:0121 X:0003 Y:0000 S:1e78 D:0000 DB:80 NvMxdIzc V:239 H:1318 |
It takes the value from a BS-X Register and WRITES IT TO THE WRAM ? !
It might get interesting... Stay tuned...
LuigiBlood - September 14, 2010 05:31 AM (GMT)
My thoughts about BS-X Registers :
$218A - Number of byte blocks (Max = $14)
$218B - Number of bytes in a block
$218C - Data ?
I think we're about to find how the BS-X Downloads Data.
LuigiBlood - September 15, 2010 06:44 PM (GMT)
This is getting exciting !
I got No signal message to never appear.
All because of a change on $218D.
So, $218A to D, are Signal Related.
[20:40] > $7E9A20 = $218B Data.
[20:40] > $7E9A34 = $218C Data.
RAM 0x143C : Contains the value of $218D
For record purposes.
I'm on something there, maybe it's almost time !
Con - September 15, 2010 07:34 PM (GMT)
I do want to share your excitement, however I'm too long off-coding yet and do not understand what you are trying to find out and what's the purpose of it... could you explain, it sounds interesting
LuigiBlood - September 15, 2010 07:43 PM (GMT)
I'm trying to find out, how the Satellaview gets a signal.
Con - September 15, 2010 08:02 PM (GMT)
ah ok, might be interesting for technical history of BS-X... is there any practical use (real hardware or such)?
LuigiBlood - September 15, 2010 08:17 PM (GMT)
Actually, i got the idea of a Satellaview Server System, but i don't want this to be possible on real hardware (for various reasons). But i need to know how the BS-X gets a signal so i can work on something.
Duke Serkol - September 15, 2010 10:55 PM (GMT)
In before Zero Wing joke.
Tre - September 16, 2010 05:40 AM (GMT)
*Sighs* All your base (code) are belong to us. *Walks out, knowing my job here is complete...*
LuigiBlood - October 16, 2010 03:08 PM (GMT)
It downloads data.
But recognizing it, is another story.
It's just getting complicated.
But you know, the fight between me and BS-X, has just started.
Remember that this part of the wiki :
http://wiki.superfamicom.org/snes/show/Satellaview+(Meta)Is getting updated by myself.
Right now, i found out about some checksum on the download data header, and some other things that i didn't get yet.
Duke Serkol - October 16, 2010 05:31 PM (GMT)
Sounds like progress. Good ^_^
LuigiBlood - October 19, 2010 11:16 AM (GMT)
Not related much to BS-X Project, but it needs a show :

Yeah. I made it work ! And i didn't hack the game at all.
Here's the thing :
I tried a XML Memory Map, with the Mapping that RPG Tsukuru 2 actually expect (Slot = Bank C0-FF:8000-FFFF)
RPG Tsukuru 2 tried to access the Vendor Info, which it expects it to be at Bank C1:FF00.
The Vendor Info does not appear there, which is probably why it doesn't work.
After writing $38 and $d0 at $c08000, it expects a negative number at $c08004.
So i edited the Data Pack Data, to make RPG Tsukuru 2 see that there's a Data Pack here.
But it doesn't see anything since i have maybe corrupt it with just a $FF on 0x4 and Fake Vendor Info at 0xFF00.
EDIT:
With hacking the Loads in the ROM this time :

But there's another problem...
It reads them, but i can't play them.
MadHatter - October 19, 2010 11:47 AM (GMT)
So this is the screen that you get when you try to load memory pack data from RPG Tsukuru 2 or is this some sort of Memory Pack file manager/debug mode that you discovered?
Also this may be a silly question but what's Shinki Sakusei? Is that the default savename or is that actually the name of an official Nintendo level for RPG Tsukuru 2?
LuigiBlood - October 19, 2010 12:18 PM (GMT)
It's the screen for managing Memory Pack Data, it can save your own RPGs, load others, and delete all kinds of data.
Also, i managed to play some RPGs. Just don't load anything, don't make anything, go to the Game Menu (1st choice), it will give you a choice between present RPGs, the one included, and the others on the Memory Pack.
About Shinki Sakusei :
I don't know.
LuigiBlood - October 19, 2010 03:44 PM (GMT)
RPG Tsukuru 2 Data Pack support IPS Patch + XML Map :
http://www.mediafire.com/?45pspv25mqw6sy5Sound Novel Tsukuru Data Pack support IPS Patch + XML Map :
http://www.mediafire.com/?qukpotymaj67fibHere.
SmashManiac - October 19, 2010 05:12 PM (GMT)
I'm not familiar with RPG Tsukuru, what do the above patches allow exactly?
LuigiBlood - October 19, 2010 05:33 PM (GMT)
These patches makes the ROM read Data Packs, as bsnes doesn't do full support of it.
SmashManiac - October 19, 2010 06:14 PM (GMT)
So it's a workaround for an emulation issue?
LuigiBlood - October 19, 2010 06:23 PM (GMT)
Yeah. And about Ongaku Tsukuru, i can't do anything about it.
Update :
RPG Tsukuru 2 Data Pack support patch + XML Map :
http://www.mediafire.com/?45pspv25mqw6sy5 (IPS)
http://www.mediafire.com/?mk8gej426r2vtw4 (UPS)Sound Novel Tsukuru Data Pack support patch + XML Map :
http://www.mediafire.com/?qukpotymaj67fib (IPS)
http://www.mediafire.com/?w2bn1yh32sd2541 (UPS)
SmashManiac - October 19, 2010 06:55 PM (GMT)
Ah I see. I suggest you contact byuu about this.
Videogamer555 - January 27, 2011 03:54 AM (GMT)
| QUOTE (LuigiBlood @ Jul 30 2010, 03:13 PM) |
Well, i decided to see how the BS-X ROM worked, and i do hacks in the interesting places to see if something interesting happens.
Let me talk about unreleased things. BS-X supports up to 32M Data Pack. No joke.
Proof :
 (Mario ExciteBike 4 in one Data Cart !)
I made a 32M Data ROM for BS-X, this screen is taken from bsnes. But unfortunately, it can only start the first game.
I had to do a little hack on the BS-X to make this working. But it could work for real, if you can make a 32M Data Pack with inside info saying to the BS-X : "It's a 32M Data Cart, read it all !"
Well, you want technical explaination ? Here it is : First of all, the Data Pack is directly accessible from the software. 32M of Data directly accessible. But the BS-X actually CAN make use of all, but the Data Pack must give informations to the BS-X.
Here's a disassembly of the Data Pack Header Info Reading process :
| CODE | 00/C1F2: AF 00 FF C0 LDA $C0FF00 00/C1F6: 8F D6 99 7E STA $7E99D6 00/C1FA: AF 02 FF C0 LDA $C0FF02 00/C1FE: 8F D7 99 7E STA $7E99D7 00/C202: AF 04 FF C0 LDA $C0FF04 00/C206: 8F D8 99 7E STA $7E99D8 00/C20A: AF 06 FF C0 LDA $C0FF06 00/C20E: 8F D9 99 7E STA $7E99D9 00/C212: AF 08 FF C0 LDA $C0FF08 00/C216: 8F DA 99 7E STA $7E99DA 00/C21A: AF 0A FF C0 LDA $C0FF0A 00/C21E: 8F DB 99 7E STA $7E99DB 00/C222: AF 0C FF C0 LDA $C0FF0C 00/C226: 8F DC 99 7E STA $7E99DC 00/C22A: AF 0E FF C0 LDA $C0FF0E 00/C22E: 8F DD 99 7E STA $7E99DD 00/C232: AF 10 FF C0 LDA $C0FF10 00/C236: 8F DE 99 7E STA $7E99DE 00/C23A: AF 12 FF C0 LDA $C0FF12 00/C23E: 8F DF 99 7E STA $7E99DF |
It reads bytes that the Data Pack is actually giving, DON'T EVEN TRY TO SEARCH FOR THEM IN BS ROMS. They are not there. But what we are interested the most, is this :
| CODE | | 00/C20A: AF 06 FF C0 LDA $C0FF06 |
What is that ? It's the reading process of the Size Byte. It's the 7th byte in the Header Info of the Data Cart. bsnes actually forces the Header Info to have 8M. So i had to hack the ROM to see how it can work. I changed this :
| CODE | | 00/C20A: AF 06 FF C0 LDA $C0FF06 |
TO :
| CODE | 00/C20A: A9 2C LDA #$2C 00/C20C EA NOP 00/C20D EA NOP |
Instead of reading the Size Info byte, i did fake it by instead loading another byte. How that Size Data works : Let's see "2C" in detail : $2C = %00101100
Here's what is needed to closely watch : $2C = %00101100
It's the Size Info. By changing it, you can make it : 000 = 2M Data Cart 001 = 4M Data Cart 010 = 8M Data Cart 011 = 16M Data Cart 100 = 32M Data Cart
I don't try to do more, because i don't think it would be good, as 32M is the REAL limit. I don't know the use of the other Info bytes.
Well, this is it. It was long to write, but i'm happy.
|
WOH! How did you put 4 games in one file? I've tried putting 2 different BS compatible games into a zip file and play in BSNES, but only the 1st game in the zip file showed up in the BS-X game launcher menu. I'm confused.
SmashManiac - January 27, 2011 05:29 AM (GMT)
| QUOTE (Videogamer555 @ Jan 26 2011, 11:54 PM) |
| I've tried putting 2 different BS compatible games into a zip file |

Wow, I feel as if a high school student still struggling with fractions just asked something about calculus.
Anyway, I'll tell you what you did wrong: you're supposed to append the data into one big file by using a hex editor, not compress the files together.
KiddoCabbusses - January 27, 2011 05:30 AM (GMT)
VG555.... *coughcoughcough*
.... let me just put it this way; A real Super Famicom never read .zip files that way, and neither would BSNES.
There are a select few ROM dumps going around of 8M Packs with more than one bit of data, most notably the "Kouryaku Casino Bar Roulette/Game Tora no Ooana SPECIAL Magazine" combo. Besides that, while it'd be theoretically possible to combine ROMs, no one really bothers with it because it's harder to work with in emulation - Callis even prefers -splitting- ROMs if there's more than one application in an 8M Pack dump.
... but, VG555, I suggest digging up on the basics before trying to get into all this.
Videogamer555 - January 27, 2011 06:00 AM (GMT)
| QUOTE (KiddoCabbusses @ Jan 26 2011, 09:30 PM) |
VG555.... *coughcoughcough*
.... let me just put it this way; A real Super Famicom never read .zip files that way, and neither would BSNES.
There are a select few ROM dumps going around of 8M Packs with more than one bit of data, most notably the "Kouryaku Casino Bar Roulette/Game Tora no Ooana SPECIAL Magazine" combo. Besides that, while it'd be theoretically possible to combine ROMs, no one really bothers with it because it's harder to work with in emulation - Callis even prefers -splitting- ROMs if there's more than one application in an 8M Pack dump.
... but, VG555, I suggest digging up on the basics before trying to get into all this. |
Well to make 4 games show up on that game start list then, I'm gonna have to make a single file containing all 4 roms. Now do I also need code to tell the emu that there's more than one game in the data stream that is the file? Or does it automatically scan the whole file and then recognize the end of one game and the beginning of the one? What about the SMC header on each rom? Before I concatinate them into a single file should I leave the SMC headers in place, remove all but the SMC header on the first rom, or remove all SMC headers?
Or is it even more complex than concatenating roms? Will I need to know ASM programming to write code that tells it that it's a multi-game cart, and write this loader program as it's own game rom and then append the actual game roms to the end of this file?
KiddoCabbusses - January 27, 2011 02:33 PM (GMT)
*eh-hem!*
While I don't know the specifics of how the packs store data, I will say ta few of these;
1) Don't expect to be able to combine any 1mb games together, because BSNES will not read a ROM as BS-X/Satellaview if it's above 1mb. You won't be able to combine Soundlink games or game demos.
2) From what I remember Callis telling me, there is some degree of interleaving or some such in Memory Packs with multiple pieces of data. I assume this makes it a tad more complicated.
3) The only real function this iwll end up having is having 2-8 games on the menu. derp.
SmashManiac - January 27, 2011 03:47 PM (GMT)
| QUOTE (LuigiBlood @ Jul 30 2010, 07:13 PM) |
| But unfortunately, it can only start the first game. |
| QUOTE (Videogamer555 @ Jan 27 2011, 02:00 AM) |
| loader |

Seriously, did you even read what you originally quoted or just looked at the picture?
MadHatter - January 27, 2011 03:56 PM (GMT)
Haha. I originally posted basically the same thing and then I deleted it because I thought that maybe VG555 was hoping to go hacking beyond where LuigiBlood left off. If so, then best of luck to him.
If on the other hand VG555 was just asking us to spoon-feed yet another answer to him because he doesn't like reading previous posts then double triple facepalm to all of us for even answering him...
EDIT: striking - it was already double facepalm. : P
Terra Branford - January 27, 2011 05:35 PM (GMT)
Let's try to tone the "mockery" down, just a touch, yeah? VG5³ may be frustrating you guys with discoveries that we all knew already for years, but let's not squash his enthusiasm just yet.
That said, VG5³, you do need to read more carefully, what has been posted, before you just reply to whatever catches your interest most. And research what has already been on the site. We've got people here who have been living BS Zelda and Satellaview for a decade now... and if asked correctly, will likely point you into the right direction for new information you'd never have discovered on your own.
I'm just saying.
MadHatter - January 27, 2011 08:24 PM (GMT)
You are of course right, Terra. There's no need to turn people off of BS Zelda or the Satellaview games or to try to diminish their enthusiasm. I think the frustration over VG555 comes from the fact that he has been very rude since the start. If he could listen to the repeated advice to stop typing in ALL CAPS and to do a bit of rudimentary research before asking silly questions or accusing people of violating his (often incorrect) understanding about how the games and the system historically worked then it would be much easier to be nice to him. I for one would be happy to welcome a reformed VG555.