Jump to content
ZackAttack

3E does not work with larger ROM sizes

Recommended Posts

It was my understanding when I ordered my harmony encore that it would support a 512KB game no problem. I've been experimenting with different sized 3E ROMs and the largest I could get to work was 32KB. I also ran into problems with odd sizes like 30KB.

 

Attached is a zip with the different sizes I tried. They all work in stella and only differ in image size.

 

Is this a hardware limitation of the encore or is there just a problem with the firmware? (I'm using the v1.06 firmware)

 

3E_tests.zip

Share this post


Link to post
Share on other sites

It was my understanding when I ordered my harmony encore that it would support a 512KB game no problem. I've been experimenting with different sized 3E ROMs and the largest I could get to work was 32KB. I also ran into problems with odd sizes like 30KB.

 

Attached is a zip with the different sizes I tried. They all work in stella and only differ in image size.

 

Is this a hardware limitation of the encore or is there just a problem with the firmware? (I'm using the v1.06 firmware)

 

attachicon.gif3E_tests.zip

I tried your 510k rom in Stella and noticed you TIA registers are normal (not offset). I believe with 3E you have to offset them or else you will trigger bankswitches. I looked and found in an old 3E rom I had done this:

VSYNC   = $00 | $40              ; must use TIA mirror registers at 0x40 for 3E bankscheme
VBLANK  = $01 | $40
WSYNC   = $02 | $40
RSYNC   = $03 | $40
NUSIZ0  = $04 | $40
NUSIZ1  = $05 | $40
COLUP0  = $06 | $40
COLUP1  = $07 | $40
COLUPF  = $08 | $40
COLUBK  = $09 | $40
CTRLPF  = $0A | $40
REFP0   = $0B | $40
REFP1   = $0C | $40
PF0     = $0D | $40
PF1     = $0E | $40
PF2     = $0F | $40
RESP0   = $10 | $40
RESP1   = $11 | $40
RESM0   = $12 | $40
RESM1   = $13 | $40
RESBL   = $14 | $40
AUDC0   = $15 | $40
AUDC1   = $16 | $40
AUDF0   = $17 | $40
AUDF1   = $18 | $40
AUDV0   = $19 | $40
AUDV1   = $1A | $40
GRP0    = $1B | $40
GRP1    = $1C | $40
ENAM0   = $1D | $40
ENAM1   = $1E | $40
ENABL   = $1F | $40
HMP0    = $20 | $40
HMP1    = $21 | $40
HMM0    = $22 | $40
HMM1    = $23 | $40
HMBL    = $24 | $40
VDELP0  = $25 | $40
VDELP1  = $26 | $40
VDELBL  = $27 | $40
RESMP0  = $28 | $40
RESMP1  = $29 | $40
HMOVE   = $2A | $40
HMCLR   = $2B | $40
CXCLR   = $2C | $40

CXM0P   = $00 | $40
CXM1P   = $01 | $40
CXP0FB  = $02 | $40
CXP1FB  = $03 | $40
CXM0FB  = $04 | $40
CXM1FB  = $05 | $40
CXBLPF  = $06 | $40
CXPPMM  = $07 | $40
INPT0   = $08 | $40
INPT1   = $09 | $40
INPT2   = $0A | $40
INPT3   = $0B | $40
INPT4   = $0C | $40
INPT5   = $0D | $40

SWCHA   = $0280
SWACNT  = $0281
SWCHB   = $0282
SWBCNT  = $0283
INTIM   = $0284
TIMINT  = $0285
TIM1T   = $0294
TIM8T   = $0295
TIM64T  = $0296
T1024T  = $0297

This also more properly done using vcs.h with TIA_BASE_READ_ADDRESS = $40 and TIA_BASE_WRITE_ADDRESS = $40. Also just for clarity my 3E rom was not over 32K.

Share this post


Link to post
Share on other sites

I tried your 510k rom in Stella and noticed you TIA registers are normal (not offset). I believe with 3E you have to offset them or else you will trigger bankswitches. I looked and found in an old 3E rom I had done this:

VSYNC   = $00 | $40              ; must use TIA mirror registers at 0x40 for 3E bankscheme
VBLANK  = $01 | $40
WSYNC   = $02 | $40
RSYNC   = $03 | $40
NUSIZ0  = $04 | $40
NUSIZ1  = $05 | $40
COLUP0  = $06 | $40
COLUP1  = $07 | $40
COLUPF  = $08 | $40
COLUBK  = $09 | $40
CTRLPF  = $0A | $40
REFP0   = $0B | $40
REFP1   = $0C | $40
PF0     = $0D | $40
PF1     = $0E | $40
PF2     = $0F | $40
RESP0   = $10 | $40
RESP1   = $11 | $40
RESM0   = $12 | $40
RESM1   = $13 | $40
RESBL   = $14 | $40
AUDC0   = $15 | $40
AUDC1   = $16 | $40
AUDF0   = $17 | $40
AUDF1   = $18 | $40
AUDV0   = $19 | $40
AUDV1   = $1A | $40
GRP0    = $1B | $40
GRP1    = $1C | $40
ENAM0   = $1D | $40
ENAM1   = $1E | $40
ENABL   = $1F | $40
HMP0    = $20 | $40
HMP1    = $21 | $40
HMM0    = $22 | $40
HMM1    = $23 | $40
HMBL    = $24 | $40
VDELP0  = $25 | $40
VDELP1  = $26 | $40
VDELBL  = $27 | $40
RESMP0  = $28 | $40
RESMP1  = $29 | $40
HMOVE   = $2A | $40
HMCLR   = $2B | $40
CXCLR   = $2C | $40

CXM0P   = $00 | $40
CXM1P   = $01 | $40
CXP0FB  = $02 | $40
CXP1FB  = $03 | $40
CXM0FB  = $04 | $40
CXM1FB  = $05 | $40
CXBLPF  = $06 | $40
CXPPMM  = $07 | $40
INPT0   = $08 | $40
INPT1   = $09 | $40
INPT2   = $0A | $40
INPT3   = $0B | $40
INPT4   = $0C | $40
INPT5   = $0D | $40

SWCHA   = $0280
SWACNT  = $0281
SWCHB   = $0282
SWBCNT  = $0283
INTIM   = $0284
TIMINT  = $0285
TIM1T   = $0294
TIM8T   = $0295
TIM64T  = $0296
T1024T  = $0297

This also more properly done using vcs.h with TIA_BASE_READ_ADDRESS = $40 and TIA_BASE_WRITE_ADDRESS = $40. Also just for clarity my 3E rom was not over 32K.

 

Thanks for taking a look. According to the kevtris blog using the TIA mirrors is only necessary for 3F. It also doesn't explain why my 32KB test program doesn't crash too. Would it be a valid test to take your 32K rom and concatenate it with itself to create a 64K test ROM? Of course if that works we could continue to double it up to 512K for testing purposes.

Share this post


Link to post
Share on other sites

I took a look and my old rom was quite incomplete, so I wrote a new test rom. I won't be able to try it on hardware until the weekend at least. I have a feeling the issue might be a ram limit, and maybe that it's 32k.

 

I'm not sure about your roms, but have you tried making a 512K rom only game? Here's the one I just wrote. I haven't tried it on the Encore. I also did switch the TIA addresses to normal, but if it doesn't work I would try changing them back to start at $40.

 

3E_Test.zip

 

 

  • Like 1

Share this post


Link to post
Share on other sites

I forgot to say. If this rom works it will just change background colors and cycle through $00 to $FE. Because the color registers don't use bit 0, the banks only update colors every 2nd bank.

Share this post


Link to post
Share on other sites

The test roms that I originally posted use one page of RAM. So I limited it to 510KB of ROM in order to keep the total at 512KB. So I guess really it's a 34KB program that's working since the 32KB bin file is the one that worked on the harmony.

 

I'll try the 512KB bin that you posted sometime this weekend. Btw, stella will auto detect a 3e game if you put HEX 85 3e a9 00 in the image.

Share this post


Link to post
Share on other sites

I took a look and my old rom was quite incomplete, so I wrote a new test rom. I won't be able to try it on hardware until the weekend at least. I have a feeling the issue might be a ram limit, and maybe that it's 32k.

 

I'm not sure about your roms, but have you tried making a 512K rom only game? Here's the one I just wrote. I haven't tried it on the Encore. I also did switch the TIA addresses to normal, but if it doesn't work I would try changing them back to start at $40.

 

attachicon.gif3E_Test.zip

 

 

Unfortunately, I don't have time to test your code right now, but I posted a 512k ROM here which does not work either. This ROM does not use RAM and only writes to $3F (no access to $3E), and it only use the TIA mirrors at $40. It doesn't run, even if I set the file suffix. I can't get it to even launch, nothing happens if I select the file in in the menu, so I am pretty sure that at least banking detection and file checks for 3E and 3F are not adapted for the Encore.

Edited by DirtyHairy

Share this post


Link to post
Share on other sites

I wasn't able to get DirtyHairy's roms working, and most of ZackAttacks. I am trying to nail down the size the Encore is taking. I never tried the rom I posted and instead tweaked it so it compiles to different sizes much easier.

 

Some questions I have ATM:

 

Encore firmware - what is the golden version to use? I'm really not sure if I have updated my Encore in the past and if I have Harmony firmware. This is the first thing to verify, but I could not find clear info on the Encore firmware specifically. I also can not find my disc.

 

Ram allocation: ram would use address space $F000-$F3FF for read and $F400-$FFFF for write. I count that as 1K of ram, but maybe the address space allocates it as 2K of ram? So I'm trying to figure out exactly how much ram is there to be used.

 

Some of things I am trying:

- I changed my RORG's to use $Fxxx instead of $1xxx

- I went back to using the TIA mirrors at $40 instead of $00 (like DirtyHairy)

- I changed my code to always run in the last bank, and just read a byte from each ROM and RAM bank.

- I am also trying .3E and .3F extensions

 

 

Some of the things I learned:

- Stella only allows 32 RAM banks to be selected (0-31 writes to $3E)

Share this post


Link to post
Share on other sites

Some of the things I learned:

- Stella only allows 32 RAM banks to be selected (0-31 writes to $3E)

 

This is directly from the description of the scheme. Stella can easily be extended if necessary; I just went with what was described in documentation.

Share this post


Link to post
Share on other sites

 

This is directly from the description of the scheme. Stella can easily be extended if necessary; I just went with what was described in documentation.

That makes sense. Last night I found a link to the Encore appendum, and it describes that it can do (under extensions):

 

3E (3F with up to 256k RAM)

 

Link to appendum upload:

http://atariage.com/forums/topic/156500-latest-harmony-cart-software/page-6?do=findComment&comment=3895566

Share this post


Link to post
Share on other sites

Here is my new rom:

 

3E_Test_(rev2).zip

 

It will run a test and give a green screen (pass), or red (fail). The number it displays represent:

; 3  rom fail, ram fail
; 2  rom fail, ram pass
; 1  rom pass, ram fail
; 0  rom pass, ram pass

I ran the two roms included, and it failed the 3E_Test_(32rom32ram).3e and displayed a "1".

 

That tells me the I can only select 16 ram banks on the Encore, and that the total ram available is 16K.

 

I am now going to keep the ram at 16K and try increasing the rom size.

Share this post


Link to post
Share on other sites

I tried a 64k, 128k, 256k, and 512k rom. All fail to load.

 

I looked at the firmware version on my Encore screen, and it is 1.06. I am now going to search and try uploading the lastest eeprom and bios files to my Encore. If anyone can say for certain they now what should be used on the Encore please say so.

Share this post


Link to post
Share on other sites

Thanks for the systematic testing, Omegamatrix! About the Encore firmware: this is actually an interesting question. I have never seen firmware specifically for the Encore, so I was always under the assumption that both Harmony and Encore use the same firmware and all differences are accounted for at runtime (and my Encore *does* run EF cartridges, which supposedly is a Encore-only feature). However, this is just an assumption, so a definitive statement by someone who knows better wouldn't hurt ;)

Share this post


Link to post
Share on other sites

I tried:

 

Harmony 1.06 BIOS (beta) Same results as before. 32K Rom and 16 Ram maximum for 3E. This version also has garbled characters on the menu screen.

 

Harmony 1.06 BIOS (beta 2) No change for larger size in 3E. Garbled characters is fixed.

 

Harmony 1.06 BIOS (beta 5) No change for larger size in 3E.

 

Harmony 1.06 BIOS No change for larger size in 3E. I'm assuming this is the official release version, but is it the latest?

 

 

 

I updated these all with .cu file, and made sure that only the new hbios was on the root of the SD card. I also checked subfolders to make sure no hbios files were in there.

 

One other thing I wondering is if the eeprom file is different for Encore.

  • Like 1

Share this post


Link to post
Share on other sites

Hmm, reading that it looks like 3E was updated to support more RAM, not ROM, and 3F wasn't updated (not listed) so it still supports 32K.

 

Might try experimenting with DF (128K) and BF (256K).

Share this post


Link to post
Share on other sites

Those other larger bankswitching formats may very well work, but I'm just focusing on 3E at the moment. These are all the 3F games I know of:

 

- Espial

- Miner 2049er

- Miner 2049er Vol II

- Polaris

- River Patrol

- Springer

 

All are 8K. Going with that I made some new 8k roms with different amounts of ram:

 

- 8k rom, 16 ram - failed (would not load)

- 8k rom, 32 ram - failed (would not load)

- 8k rom, 64 ram - failed (would not load)

- 8k rom, 128 ram - failed (would not load)

- 8k rom, 256 ram - failed (would not load)

 

I thought about this and released I had already found that a 32k rom and 16k ram worked, so the 8k rom with 16k ram failure was interesting. I went down a path of thinking that 32K rom plus 16 ram x2 (read/write addressing) = 64K, so maybe the size of both together matered in a way it gets stored in the encore memory. Perhaps the non-loading is due the Encore not starting up in the last bank as defined by the spec, because the size is not what was expected.

 

On that note I experimented next by making a 64k rom with a 32k ram, but it would not load too. So that's where we are.

  • Like 2

Share this post


Link to post
Share on other sites

I made a test rom and tried BFSC and it works on the Encore. This is sixty four 4k banks with super chip ram.

 

BFSC_Test.zip

 

What is interesting is while loading the Harmony logo disappears and is replaced by an 'e' for Encore. Very nice touch and I haven't seen it before. Must only appear for bankswitching schemes that the Encore can do? In the zip file above is a video of it in action.

  • Like 6

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...