Jump to content
IGNORED

PlusCart (an inexpensive DIY WiFi multicart)


Al_Nafuur

Recommended Posts

New firmware version v0.13.6 available in PlusStore and GIT:

  • Download offline ROMs from PlusStore without manually generating the tar file

  • detection for tar file flashed with the STM32CubeProgrammer

  • new function to erase flash storage

  • code and comments cleanup

The menu entries for offline ROMs have been moved to the "Setup" menu (see manual )

 

grafik.thumb.png.df7488ac1795bb30af870aae2e0f3540.png

 

 

 

Edited by Al_Nafuur
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

H.E.R.O. has been modified for the PlusCart High Score Club. The ASM code can be found in Gitlab.

PlusCart user/tester can find the PAL and NTSC versions in the PlusStore directory "Public ROMs\PlusROMs\High Score Club"
 

The NTSC version can be played online in javatari.js.

 

The "PlusCart High Score Club" page for H.E.R.O.:

https://highscore.firmaplus.de/?game_id=7

 

There was not enough free space in the first ROM bank to use the PlusROM functions, so i had to "modify" one of the graphics ..find out which :-)

 

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...
On 4/8/2020 at 11:22 PM, Al_Nafuur said:

New firmware version v0.13.6 available in PlusStore and GIT:

  • Download offline ROMs from PlusStore without manually generating the tar file

  • detection for tar file flashed with the STM32CubeProgrammer

  • new function to erase flash storage

  • code and comments cleanup

The menu entries for offline ROMs have been moved to the "Setup" menu (see manual )

 

grafik.thumb.png.df7488ac1795bb30af870aae2e0f3540.png

 

 

 

That's a sweet text display.
 

 

  • Thanks 1
Link to comment
Share on other sites

That's a sweet text display.
 
 
I really appreciate this text size and format better than the original. I understand that UnoCarts software is really easy to read with it's larger text. To me this looks way more modern (professional?) and allowing more to be displayed on the screen at one time is important due to the ever growing binary repository on the PlusCart store.

Sent from my SM-N960U using Tapatalk

  • Like 1
Link to comment
Share on other sites

3 hours ago, Prizrak said:

I really appreciate this text size and format better than the original. I understand that UnoCarts software is really easy to read with it's larger text. To me this looks way more modern (professional?) and allowing more to be displayed on the screen at one time is important due to the ever growing binary repository on the PlusCart store.

The PlusStore is mainly growing, because of your fantastic job in updating all WIPs and downloading new ROMs everyday. Because of that i am thinking about a search function in the PlusCart menu.

Link to comment
Share on other sites

3 hours ago, Andrew Davie said:

That's a sweet text display.
 

 

it's "just" a static 28kb text-kernel made by @Thomas Jentzsch . It felt like he only needed 2 days to build it, but it took me more than 2 weeks to work through and cut it into a few c functions to dynamically build the ROM banks for the menu texts.

  • Like 1
  • Haha 1
Link to comment
Share on other sites

The PlusStore is mainly growing, because of your fantastic job in updating all WIPs and downloading new ROMs everyday. Because of that i am thinking about a search function in the PlusCart menu.
Whoever thinks the 2600 system is dead is wrong, for a system over 40 years old it see as much activity as any of the new systems. In the past few months, maybe sense I've taken the task of maintaining the PlusCart repository I've uploaded over 300 binaries with most of them being current games. I absolutely love the 2600 scene and energy on the forum for such a nostalgic system.

Sent from my SM-N960U using Tapatalk

  • Like 3
Link to comment
Share on other sites

  • 1 month later...

experimental support for DPC+ with patched or recompiled ARM(thumb) code. Chaotic Grill (by @splendidnut https://atariage.com/forums/topic/246769-chaotic-grill-burgertime-remake-in-progress ) and the DPC+ demo ( @SpiceWare https://atariage.com/forums/topic/163495-harmony-dpc-programming) are working. I've recompiled some DPC+ ARM demos, games and the batariBasic ARM code. Some of the recompiled binaries are starting, but there is a bug so that most of them crash at some point (batariBasic games are crashing right at the start).

 

 

 

  • Like 5
Link to comment
Share on other sites

For those who like to read some source code:

Collect2-menu-demo-PlusCart.zip 

Collect2-rainbow-demo-PlusCart.zip

Spacerocks-PlusCart.zip

Frantic-PlusCart.zip

batariBasic-PlusCart.zip

 

basically only the pointer addresses are changed and the memory definition in "custom/src/custom.boot.lds"

  • Like 2
Link to comment
Share on other sites

For batari Basic, There is a very small bit of ARM code in custom.S that could be causing the immediate crashes. The arm code is only there to handle the mode switch from the Harmony/Melody bankswitch code (in ARM) to the user code (in Thumb) by adjusting the PC to +1, but on a Cortex-M processor like in Pluscart I don't think you have to do that.

 

Maybe all you have to do is remove the ARM code at the beginning, and change the pointer where it returns to bankswitch code? Here is the code with the ARM code commented out, and the return to bankswitch code at the end is adjusted (I'm not sure that you need the +1, since you don't have ARM mode?)

 


/******************************************************************************
Harmony custom C Code booter - (C) Copyright 2010 - Fred Quimby
Based on code by Chris Walton
******************************************************************************/

/* Start in ARM mode */
/*.arm*/

/* Put code in boot section */
.section  .boot,"ax",%progbits

/* Entry Point (0xC00) */
.global  Custom
.func    Custom
Custom:
/* add r0,pc,#1
 bx r0

.thumb */
/* ldr r0,=0x40000024 */
 ldr r0,=0x200005B4
 ldr r2,[r0]
 cmp r2,#0
 bmi skipcopy
 add r2,#1
 str r2,[r0]
 cmp r2,#1
 bne skipcopy
 ldr r0,=_etext
 ldr r1,=_edata
 ldr r2,=_sdata ;@ data copy to ram
 sub r1,r1,r2   ;@ offset
copyloop:
 sub r1,#4
 bmi skipcopy
 ldr r3,[r0, +r1]
 str r3,[r2, +r1]
 bne copyloop
skipcopy:

 push {lr}
 ldr r0,=return_to_DPC //+1 (I think the +1 is not needed here?)
 mov lr,r0

  /* Boot to main in C code */
  ldr     r0, =main
  bx      r0

return_to_DPC:
 pop {r1}
 bx r1

  • Like 1
Link to comment
Share on other sites

1 hour ago, batari said:

For batari Basic, There is a very small bit of ARM code in custom.S that could be causing the immediate crashes. The arm code is only there to handle the mode switch from the Harmony/Melody bankswitch code (in ARM) to the user code (in Thumb) by adjusting the PC to +1, but on a Cortex-M processor like in Pluscart I don't think you have to do that.

 

Maybe all you have to do is remove the ARM code at the beginning, and change the pointer where it returns to bankswitch code? Here is the code with the ARM code commented out, and the return to bankswitch code at the end is adjusted (I'm not sure that you need the +1, since you don't have ARM mode?)

This ARM code is shared by all DPC+ games. Stella is using 0xc0b as entry point for thumbulator. The PlusCart is using the same entry point. I've tested using the 32 bit value compiled at 0xc4c to jump to the main function directly, this worked with the PlusCart also.

Edited by Al_Nafuur
Link to comment
Share on other sites

58 minutes ago, Al_Nafuur said:

This ARM code is shared by all DPC+ games. Stella is using 0xc0b as entry point for thumbulator. The PlusCart is using the same entry point. I've tested using the 32 bit value compiled at 0xc4c to jump to main function directly, this worked with the PlusCart also.

Hmm, interesting. I can't remember how it all works as it's been a while. But, I will say that entering at 0xc0b appears that it will skip over the LDR R0=0x200005B4 instruction and will go straight to the LDR R2, [R0] and load a value from whatever address is in R0 (which could cause an exception?) I might try changing the entry point to 0xc09 for PlusCart. This is just a copy-to-RAM routine that I think should only execute one time. I can't quite recall what it's for though.

 

I have to look at Stella, as maybe it already has the data where it needs it so the copy routine is not needed, and it pre-initilizes R0? I am not quite sure, it has been a long time since I looked at this.

Link to comment
Share on other sites

15 minutes ago, batari said:

Hmm, interesting. I can't remember how it all works as it's been a while. But, I will say that entering at 0xc0b appears that it will skip over the LDR R0=0x200005B4 instruction and will go straight to the LDR R2, [R0] and load a value from whatever address is in R0 (which could cause an exception?) I might try changing the entry point to 0xc09 for PlusCart. This is just a copy-to-RAM routine that I think should only execute one time. I can't quite recall what it's for though.

 

I have to look at Stella, as maybe it already has the data where it needs it so the copy routine is not needed, and it pre-initilizes R0? I am not quite sure, it has been a long time since I looked at this.

Yes the "LDR R0=0x200005B4" is skipped, it was just by accident that i "patched" it. I guess, it's the return address into the Harmony ARM driver at (0x40000024).

The PlusCart DPC+ driver has a different address, which should be on R0 when it's calling 0xc0b 

The copy to RAM routine is also not needed, because the PlusCart DPC+ driver copied the Display and Frequency Data to RAM before starting the emulation.
 

Link to comment
Share on other sites

5 minutes ago, Al_Nafuur said:

Yes the "LDR R0=0x200005B4" is skipped, it was just by accident that i "patched" it. I guess, it's the return address into the Harmony ARM driver at (0x40000024).

The PlusCart DPC+ driver has a different address, which should be on R0 when it's calling 0xc0b 

The copy to RAM routine is also not needed, because the PlusCart DPC+ driver copied the Display and Frequency Data to RAM before starting the emulation.
 

The return address should be in LR, actually, when the routine is called. From analysis of the code, I think R0 is just a free RAM location for determining whether the data has been copied to RAM or not.

 

You could probably skip this altogether if you already copied data, and just jump directly to skipcopy for the Pluscart, if this isn't what you are doing already.

  • Like 1
Link to comment
Share on other sites

14 hours ago, batari said:

The return address should be in LR, actually, when the routine is called. From analysis of the code, I think R0 is just a free RAM location for determining whether the data has been copied to RAM or not.

 

You could probably skip this altogether if you already copied data, and just jump directly to skipcopy for the Pluscart, if this isn't what you are doing already.

is batari Basic's ARM "CALLFUNCTION" using "PARAMETER"?

Link to comment
Share on other sites

New "test" version v0.14.9 available in PlusStore with:

  • experimental DPC+ timing tweaks

There seems to be some timing issues with the NTSC VCS, which has a slightly higher CPU clock than the PAL VCS. So could NTSC user please update and test the DPC+ ROMs in "Public ROMs/DPC+ (expertimental)", especially "DPC+ demo.bin" (use select switch) and the recompiled collect2_xxx demos.

Edited by Al_Nafuur
Link to comment
Share on other sites

New version v0.14.10 available in PlusStore and GIT with:

  • Add suport for SuperBanking (128Kb and 256kb) (e.g. Prince of Indiana by @gfvh)
  • Add support for 4KSC (and 2KSC) (e.g. Space Invaders Arcade by @Thomas Jentzsch )
  • Reworked and merged emulation functions (2K, 4K, FxSC, DF, DFSC, BF, BFSC)
  • Directories in menu now have a (slightly) different color

DPC+ support is still experimental in the PlusStore build but this branch is not yet in the GIT repository.

 

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

There are two new start menu entries now:
grafik.thumb.png.0bc0536a4ed299d54322033dd9fef647.png

 

The "Top Downloads (Last 4 weeks)" folder contains the 11 most downloaded ROMs of the last 4 weeks from the "Public ROMs" area.

The "Newest ROMs" folder contains the 11 newest ROMs from the "Public ROMs" area.

 

I'm not so happy with the folder names, so feel free to make suggestions.

 

 

 

  • Like 1
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...