A downloadable emulator

Download NowName your own price

NOW WITH PNG SUPPORT!

tac08 is an emulation of the runtime part of the Pico-8 fantasy console.  It takes a .p8 (text format) or .p8.png (png format) Pico-8 cart file and runs it closely as possible to the real Pico-8 software. 

This version of tac08 has been compiled to run on an RG350 handheld console and compatibles (such as the Pocket Go v2 & the GCW Zero).

Many thanks to all that have donated to the project so far. Both financially and with kind words. Your generosity has been most surprising during these difficult times.

The Games are provided on this page in the file sample_games.zip are written by myself, no games written by third parties are available on this page.  Game carts must be saved from Pico8, in order to play on this emulator. 

This emulator is still very much in development, while testing I have found that most games will play just fine, there may some that do not play correctly at all, please leave a comment if you find a cart that does not work.

This following items still need work:

  1. Sound: While sound is working now, work is still needed to implement all the effects pico8 uses.
  2.  More compatibility improvements. 


If you enjoy this emulator please consider making a donation, this will allow me to continue development and in the future support other consoles.

Enjoy!

version history: 

  • 0.0.1 - 02-JUL-2020 - initial version released to itch.io
  • 0.0.2 - 13-JUL-2020 - Much better performance. Neary all games run at correct speed. API compatibility with pico8 0.2.1b
  • 0.0.3 - 29-AUG-2020 - Sound working
  • 0.0.4 - 09-SEP-2020 - Minor API compatibility fixes & RG350 X & Y buttons mapped onto Pico8 buttons so that any 2 adjacent button can be used as the 2 Pico8 buttons.
  • 0.1.1 - 14-OCT-2020 - PNG, multicart and lots of other fixes. check out the devlog for this release. 
  • 0.1.2 - 15-OCT-2020 - fixed bug that stopped some older png carts from loading

Download

Download NowName your own price

Click download now to get access to the following files:

tac08.0.1.2.zip 427 kB
sample_games.zip 14 kB

Development log

Comments

Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 41 · Next page · Last page

anyway to know compatibility version of pico-8?

Thanks! Great work! I love my RG350 & PICO-8. Please update ASAP!

Just donated $5, thanks for the great work! It would be awesome if Celeste Classic 2 was running!

hello I would love if this were updated so that playing Celeste Classic 2 were possible. I will certainly donate more if that happens. Thank you!

(+1)

Hi anyway to get updated source code ? Or get an updated version for powkiddy v90 / new bittboy / pocket go on MiyooCFW ?

Does it work with the RG-351V?

(+1)

no, it doesn't, however as it uses an arm CPU that same as a rg351 the standard version of pico8 should run on it? 

Good to know ! I was thinking of updating but not if it cancels out this marvelous emulator. Thanks for the heads up !

(6 edits)

(updated 05-20-21)

Hi, wanted to know if you had done anymore work to this. While this runs some of the Pico-8 library on my RG-350, it runs none of the carts I wrote. Why ? I use FLIP() and fixed loops, not _Update() or _Draw().

Currently I donated $2 as this is the amount you suggested and if you can get your Taco to run this code listed as well as the command CSTORE() which run fine in Pico-8, I sure would appreciate it and I will donate an additional $40 in support of your work.

$20 for getting FLIP() to work.

And an additional $20 for getting CSTORE() and MEMCPY() to work (it must be both) so I can load/save the sprite set at 8192-bytes which I normally use for extended saved data.

repeat
for i=0,127 do
 for j=0,127 do
  pset(j,i,rnd(16))
 end
end
flip()
until false

CSTORE() that comes with Pico-8 is not recognized as a command in your emulator. This command is vital when it comes to saving off external files. Without it you are limited to accessing only 256-bytes of remote memory per program. A serious limitation.

So even more than getting the code above to work is CSTORE().

Also Pico-8 is now at version 0.2.2c so there is a lot of catching up for you to do if you so choose !

https://www.lexaloffle.com/pico-8.php?page=manual


Hope to hear from you soon ...
--dw817

It is great. It works with RG-280V.
I donate, support the completion of tac8, which works more perfectly.

(2 edits)

Hello, I´m trying to work on a parser/serializer for p8 files, have you open sourced this or anything that could help me with thits? thanks

EDIT: I found the repository on github, will take a look, but if you don´t mind pointing me the file I should read, it would be helpful! thanks

EDIT2: I´m guessing this one? https://github.com/0xcafed00d/tac08/blob/master/src/pico_cart.cpp

(-1)

Hello , I noticed that the git repository of this project didn't get updated in quiet a while. Was it abandoned or are you planing to make further updates?

It looks like the last update on the git repo was march 2020, and the last update here on itch.io was much later, in october 2020. My guess is that the developer chose to go closed-source with this project.

Any chance to see this working on ps vita? Or is it even possible, given the ps vita hardware?

https://vitadb.rinnegatamante.it/#/info/623

Put the png gane in ux0/p8carts

Crashing with celeste classic 2
https://www.lexaloffle.com/bbs/?tid=41282

thanks for reporting this I hadn't had a chance to test It. currently I'm trying to get poom running, I'll look at Celeste 2 after that

thanks, fixed now, will be in the next release

You rule 😎

Hello! I have played many games on pocket go 2 thanks to your emulator :) Is it useful to bring bugs to you? Below are copies of recent crashes (thanks for log file saving!); I don’t know which are things added to lua by pico8 that are not yet supported by tac08, or which are bugs that the game authors should fix (but I assume that games work with pico8).

pieces of cake: plays, gets some graphical glitches when there are combos, then at some point restarts

arcanenectar-0.p8.png:273: title_goblet:update(): attempt to index global ‘title_goblet’ (a nil value)

cyclo-8.p8.png:289: local disty = abs(s-j): attempt to call global ‘pal’ (a table value)

deflektor.p8.png:105: self.state.entitylist[idx]=nil: bad argument #1 to ‘remove’ (position out of bounds)

flipknight-0.p8.png:94: copytable(self, obj): bad argument #2 to ‘remove’ (number expected, got string)

frog_home.p8.png:244: local dy+=(self.my*2): unexpected symbol near +=

moonmissions.p8.png:557: stars[star_screen_x][star_screen_y]={}: ‘end’ expected (to close ‘do’ at line 553) near <eol>

wolfhunter-0.p8.png:174: print(line, x, y, color): ‘end’ expected (to close ‘do’ at line 170) near <eol>

(+1)

thanks for reporting these. Some have already been fixed, currently I'm trying to get poom running, I'll look at some of the others after that.

I tested this on an RG350P, and unfortunately non of my three pico-8 games run very well. Mostly just poor framerate, but the audio doesn't sound right either.

So cool! Love having pico8 running on handheld hardware.

I'm also a RG280V user so if you ever find the time to fix the errors the others have been reporting (mainly frame-rate being at 150%) that would be awesome.

Added a small donation, keep up the great work!

I updated the firmware on the 280V as MehStrongBadMeh mentioned earlier and that solves the framerate issue. The main bugs I notice now are that the music doesn't sound right in many games and sometimes some graphics are missing.

(+1)

What firmware version did you update to? I just updated my 280V to OpenDingux Beta 2021-01-12 but now I'm just getting black screen for tac08.

(+1)

Ok, just read MehStrongBadMeh response where he mentions the firmware :)

(+1)

Added a little donation as an incentive for you to try some of my pico8 games on this.  So far, I haven't been very successful with them (Quasar Kid seems to try but the framerate is really really bad).

Anyway, keep up the good work and I look forward to future update to this  :)

(+2)

thanks for the contribution! I'm currently working my way though a list of compatibility issues so will gladly any issues in your games to the list.

(+1)

Exciting!

(+3)

Just got set up on my new RG280V. Running into a consistent problem on stock firmware where it is running the games too fast. For example, most 30fps games end up running at ~46fps. This, predictably, leads to them playing at about 1.5x speed as a result, making things very hard. Not really sure what is causing it. No other apps on my RG280V are experiencing this speed issue.

Beta firmware results in a black screen on launch, so that is a non-starter.

I did a check with a stopwatch. It does run about 50 % faster. 

(+2)

I have seen this with one or 2 games on the 350, but its interesting that it does it all games on the 280v. I'll have need to have a look at the frame timing code. i suspect its skipping frames when it does not need to.  

(+1)

Interesting development. The Stock-Based Rogue firmware for RG280V was just updated to v1.7.10u7 which, seemingly accidentally, fixes this speed problem in Tac08. Carts now run at the proper speed while using this firmware.

(+1)

thats odd. its strange it do not affect other emulators. I'm still going to give the frame rate code a good going over though

(3 edits)

Finally received my RG280V and tac08 looks great on it! 😀

Feature suggestions: Would it be possible to enable an option to swap A and B? Also if L1 and R1 could double as A and B one could play racing games or FEZ more comfortably (also swappable)

Bug report: 1. when loading API.P8 (part of a default install) the flipped recolored bunny sprites don't show up. 

2. In the lower right corner the vertical text does not show up (the text on the left and on the right side uses two variants of looping through a list that LUA provides, apparently only one works.

3. There is a Poke 0x5f2c command to change the internal pico-resolution to 64x64, for example in cart Nyan cat. That does not work. See cart #14897.

4. Super Poulet Poulet and it's soundtrack run about 10 to 20 % too fast. (On the Pi 0 they run too slow)

thanks for the reports, the next version will have a config file you can edit to change things like button mappings. 

Added a contribution too by the way.

Thanks, it is very much appreciated. 

(+2)

Your emulator is just awesome !!!

I just upgraded my rg350 to the new opendingux beta and now, I only have the sound working. Screen remains black.

Can you have a look and give it a fix ?

This New OD have New drivers, ipu... Also works on gcw0 ! Would be great.

Thanks

it's on my todo list

Is there a way to change the screen scaling? I run it on an RG350M and the scaling is full-screen non-integer which looks uneven.

(+1)

the next version will have a configuration for setting screen options. 

Looking forward to it!

I also wanted to add that I got the RG350M mainly because of your fantastic work. Thank you! 

(+1)

That's cool, because I got into pico-8 after watching your fantastic breakout hero videos! 

@Krystman See my review of the RG280V as the most pico PICO-8 handheld yet. Because of it's higher resolution there a practically no scaling issues.

@pixelpunker There are different RG350s. The RG280V has a higher resolution than the original RG350 but lower than the RG350M. Also you say no scaling issues but I see you rocking a 128x128 Pico8 full-screen on a 480x320 panel. If you can't see that it doesn't scale evenly I'm going to take your impressions with a dose of salt.

The ratio of input to output resolution with this panel is 2.5. While this does not allow flawless scaling the resulting pattern is very regular: 1 original px is mapped to 2, then to 3px, then to 2 and so on. I come from a gpicase with a 320x240 panel where this pattern is totally irregular because of the ratio 1.875.

Yes, you can still see it, mainly in some lines of text, but barely. And I prefer the sharpness of this approach to the blurriness of bilinear filtering.


There is a best of both worlds though, you do an integer upscale, then a bilinear downscale. E.g. I set my pi0s internal resolution to 1024x768. If you have high enough dpi like we have in todays smartphones the issue tends to go away.

Love it so much! Thanks for your hard work on this emulator. So happy to be able to play Pico-8 on my RG350M.

Glad you are enjoying it!

Thank you for your excellent work.  I do have a problem on my GCW Zero though.  The game will load and seems fine, but none of the buttons seem to work.  Am I doing something wrong?

That's odd. I've had reports from people who have the GCW Zero that it works OK. Are you running the stock firmware or something custom?

That was it!  I was on the may firmware, and I did the 8-20-2014 update, everything fixed it's self.  Thank you!

good news! Glad that helped. Enjoy!

(1 edit)

Any chance of a version that will run on the Retroid Pocket 2. Thanks

(+1)

That would be amazing! I have an RP2 ordered, and the only thing that makes me sad about moving from the RG350 to the RP2 is losing tac08.

Looks like 4 Giga Boss Fights has text palette issues in tac08 - the boss kill counter is yellow when it's supposed to be white, and the white text for the title screen and boss name splash screens renders as the same black as the background, making them unreadable.

Thanks for all your hard work!

Thanks for the report. There are so many games its impossible for me to test everything, so I rely on reports like this to help find compatibility issues. I've added it to the list for the next compatibility fix update. 

oh, and thanks for the donation. 😁

I've fixed this. it will be available in the next release, when i've fixed a few other compatibility issues.

Very excited about this update!  I'm going to do another video on Tac08 later this week.  Thanks for all of your hard work!

Cool, I'll look forward to that. Would you mind If i put links to your webpage/videos on the tac08 product page? I think it would be helpful for new users setting up the emulator.

Hi, absolutely, thanks for asking!  Always happy to help.

(+1)

Heya, here is the new video: 

Really great video!

(1 edit)

Hey 0xCAFED00D, I had asked a month or two ago about porting tac08 to RetroFW and you seemed willing to look into it. Since then, one of the talented RetroFW devs took your most recent posted source and was able to port it without much hassle, but it is the older code from before you had sound etc. working. Aside from that, it worked fantastically.


Do you plan to release the updated source in the near future? The dev in question is possibly willing to port the updated code to RetroFW, and possibly also Bittboy, and GKD350h, maybe saving you some time and effort and helping spread the love :)

If I could I would release the code now, however for reasons I cannot go into in a public forum I am not able to at the moment. Hopefully soon.

Is there a compiled version for bittboy / pocket go v1?

it's on my to-do list. 

Thanks. It will be welcome.

Thank you so much for this! I opted for $10 in the "Name your own price", because that's still a steal for this amazing app. Pico-8 is such a perfect fit for the RG350, and the games work beautifully. Really looking forward to the .png support in the next version!

(1 edit)

Thanks for the comments and donation. Every bit helps a great deal. It's taken a bit longer to get the PNG loading than I initially hoped it would, but it's looking good for a release before the end of the week. 

Awesome! No rush. I know development takes time. I always run into 100 unexpected issues any time I hit a new part of an API, file spec, etc.

We all really appreciate the app. It adds so much value to the RG350!

thank you for this superb emulator. I have problemas running multicartridge games like picoware or picoarcade.

the next version will have multicart support! Coming soon!

(1 edit)

I cannot get the Ad Astra demo to run. Just black screen. Perhaps I am doing something wrong? Also, would it be possible to support .png as the ROM format?

The Ad Astra demo seems to work ok. Make sure you are running the latest version (updated this year by zep) as the original version released in 2016 is not compatible with current versions of pico8 or tac08. 

Yes. PNG support is on my TODO list. 😀

(-1)

I used the source from this link https://www.lexaloffle.com/bbs/?pid=26835, which does not work in the emulator on my PowKiddy Q80 (I am using version 0.0.4 from Sep 9).

I could not find any newer build. of the demo

Just taking the source from the BBS page is not enough, as it is not in the correct cart format and does not contain any of the assets (sprites, maps, SFX, music). Load the cart into pico8 and save the game out as a p8 text cart. 

Ahh, thanks.

(1 edit)

0xCAFED00D is there any way you could or would be willing to port this to RetroFW? It is closely related to OpenDingux and PICO 8 games would be very well suited for the devices that run that firmware 


https://github.com/retrofw


Side note: I'm using this on an RG280M, it works near perfectly there, no resolution issues, just the known issues with sound effects and a small selection of games not working. This is currently my favorite reason to own a 280!

(+2)

I'm currently working on a number of compatibility fixes and a port to another platform (I'm not going to say what platform yet!) after that I'll have a look into retrofw. Thanks for the report about the rg280M.

(+1)

Awesome! Thank you so much for the great work and willingness to consider other platforms. PICO 8 is awesome and just seems so perfect for hhandhelds. Thank you again!

This would be so incredible! I commented on your Youtube video (thanks for the reply)! Pretty please port it to as many platforms as you can I want so badly to be playing this on my handhelds! (currently using Bittboy PocketGo V1 and Android phone) Thanks so much for all your hard work! Fingers crossed! Any way to get a notification when you drop this?)

(1 edit)

Sorry, didn't see your message on youtube. The best way to get a notification is to follow me on itch.io 

Not to worry you did reply to me on youtube! My username is just different :) Thanks again for all the great work, I'll keep my fingers crossed!

(1 edit)

Hello again CafeDood! I asked around the Discord community and one of the talented devs there agreed to try to port your fantastic tac08 to SDL 1.2 and RetroFW. However, the source files on the github are older, from March, and don't contain any of your recent improvements including working sound.


Is there any way you might be able to post the updated source?


Edit: I'm sorry, I was reading the older comments and see you did say you would not post updated force until you were happy with it. That said, once you do, it looks like the port to RetroFW will be a done deal.

The recently released RG280V would be a perfect fit for PICO-8 because of it's tiny form factor. As it's the same chip as in the RG280M it should run fine however the 280V has a different screen resolution: 480*320 with a 4:3 aspect ratio (non-square pixels). Would Tac08 look correctly on this device?

Because of the non-square pixels of the RG280V the image would need to be scaled up to 360x320 to look perfectly square. To increase the sharpness it would be best to do an integer 6x upscale to 768x768 and then do a bilinear downscale. I noticed a big increase in sharpness while doing something similar for the GPIcase's screen.

That, an interesting technique, I had not thought of that.  I'll have a play with it and see what I can do.

Here are two images, one bilinear upscaled from 128x128 to 320x320:

Tthe other is integer-upscaled to 768x768 and then bilinearly downscaled to 320x320.



It looks pretty sharp already. On the 2.8 inch screen of the RG280V it will look even sharper because of the high DPI. You could do this approach for other platforms as well.

thanks for the info, I've added this to my to-do list. 

(1 edit)

It should do, I dont have one, but so far no one has complained that it doesnt. :-)

This is great! I've played about a dozen games with this and they run perfectly.

I have noticed a couple of bugs for certain carts on my RG350M where behaviour is different than on the Pico-8. I don't know if you want to go through the trouble of playing these games to reproduce the bugs, but I'll report them anyway:

Dank Tomb: After finding a save point, if you quit the game and launch the cart again, it does not load properly. The items are glitched out in the bottom of the screen. (Save point is a bit of a ways into the game, at some point it will tell you it saved progress.)

Mystic Realm Dizzy: When talking to a character, the text does not display/wrap properly. The closest character that demonstrates the bug is to the left of the starting point on the other side of the water and past the bees.

Thanks. Reports like these are really useful, as it's hard for me to find the time to play every game fully (as much as I would like to!)

I'm currently working a round of compatibility fixes in around 5 or 6 games that have problems and I will add these games to my list. 

Quite often fixing a problem with 1 game will solve the problems with many. 

Thanks again for the feedback and the really detailed reports.

Noticed following issue:

Tower of Archeos : gives a script error, after selection of the game mode

Hope this info helps in finding the problem

thanks, that's really useful. I'll add it to the list. 

This is now fixed. I'm aiming to release a new version in a few days

Great, eager to try it out

These 2 bugs are now fixed. You may need to delete progress from the games menu, in dank tomb, as it may have corrupted the save file.  I'm aiming to release a new version in a few days

That's awesome! Can't wait!

(+1)

Thanks for the update, I'm loving it on my RG350M - no resolution issues like what was mentioned below.  I actually made a guide and video to showcase your work!  https://retrogamecorps.com/2020/08/30/pico-8-on-the-rg350/

(1 edit) (+1)

wow that's amazing, I really appreciate all the effort you put in to this! A number a people have reported an screen size issue running under SimpleMenu, I hopefully will have a fix for that soon.

Looks and sounds now amazing... Could you make the image resolution dynamic or configurable, so it would also be fullscreen on a rg350m? On that device currently only 1 quarter of the screen is being used, I assume due to the difference in size between rg350 and rg350m ...

That's odd. I've had reports of it working on an M version. Are you running the standard firmware or custom? Its tricky to test all the variants as I only have the original model. I'll take a look at what I can do with the scaling in the code. 

I have the RG350M and have a similar issue. If I run a game straight from the emulator it fits the screen fine, but if I launch a game from SimpleMenu, it displays in the bottom-left corner of the screen. However if I exit SimpleMenu, run a game from the emulator, then go back into SimpleMenu, they launch fine after that - until I shut down again, then the problem comes back.


I can confirm, it works fine if you launch the game first from the emulator.

Thanks for this, it does seem to have an issue running from SimpleMenu, I'll look into it and hopefully have a fix soon.

(+1)

can you try the version 

tac08.0.0.3_full_screen_fix_test.zip

just posted to see if that fixes the problem.

It's working great for me now, thank you very much!

One more thing while I'm here - would it be possible to add an option for an alternate control scheme that uses Y-B instead of B-A?

(+1)

cool, glad that's working now, I'll build a proper release for that fix. it shouldn't be to hard to get configurable controls into that release too, stay tuned!

Are you launching the game from SimpleMenu? That does seem to be the common factor in making the screen the wrong size. 

can you try the version 

tac08.0.0.3_full_screen_fix_test.zip

just posted to see if that fixes the problem.

(1 edit)

I still have the same issue as before with the screen_fix_test .... Only full screen if a game is launched first from the emulator, if launched from simplemenu first, then only the left corner is being used

That's very odd, another user replied that it did fix the problem for them, I'll take a look into this further, but not having an M model its not possible to replicate it here. I'll also take a look at the SimpleMenu source code to see if there are any obvious issues there. 

Problem is also fixed when Simplemenu is not used as Default launcher after reboot. So after startup, I start Simplemenu as app and then all the Pico-8 games start ok from Simplemenu on the rg350m. Thanx again for all the good work on the emulator...

Just got my RG350M - so gonna try this :)

How did it go?

(1 edit)

Thank you for releasing this! It was great to play some Tiny Architect, Pinballvania, Mai Chan’s Sweet Buns and my own game on Pocket Go v2 <3

(The P8 format limitation seems OK to me, it takes a few seconds to convert PNG to P8 thanks to tab-completion. And P8 has the advantage that I was able to use a text editor to fix a bug in my game directly on the handheld!)

Hope sound can be added in the future, and some scaling options!

(+1)

Just wanted to say thank you for creating this, and I can't wait for audio support! THANKS!!!

This is great! Thank you so much for this awesome work! By the way I wonder if it could run on the RG350M device.

yes it does!

(1 edit)

thank you so much for your hard work. Is there a Github where I can follow development/contribute? This is really great stuff.


To clarify for other prospective buyers, the potential here is awesome, but would love to get sound working.

The projects GitHub page is here: https://github.com/0xcafed00d/tac08 however this is an old version, I will be pushing the current codebase to it when I am happy with it, which hopefully will be soon. Keep a lookout there for updates. Thanks for your interest. 

Just to set my hopes realistically, is there any likelihood of a performance boost on RG350? Games like Dank Tomb feel like they're nearly half speed and I didn't know if this was due to hardware limitations?

(+1)

Yes, I think there is a bug in the frame rate limiter, so when a game is supposed to run at 30fps and it takes more than are certain amount of time to render a frame it seems to insert an extra frame, so you end up running at 20 or 15 fps. I've been looking into it for a while now, and hopefully I'll be able to fix it.

(+2)

Thanks for the new version - just gave it a try and it works great!

Viewing most recent comments 1 to 40 of 41 · Next page · Last page