ladies and gentelmen, behold the thing no one asked for, the pinnacle of console and cart design alike, my opus magnum:
Brainf**k Fantasy Console!
Have you ever got lost in the many interface options your console provides? Have you ever felt overrun with the abundance of commands included in normal programming languages that everybody knows? Do you feel flabbergasted looking at the vibrant interface colors of the mainstream fantasy consoles? My newest addition to the market has you covered! It has:
- A full-featured memory editor optimised for the purpose of programming the BFC!
- A brand new programming language based on the popular Brainf**k!
- A whopping 4096 bytes of program+data memory!
- In-depth docs written by someone who almost knows English grammar!
- And not a lot more!
Specs
Display: 128x128px, fixed 16 color palette
Input: 6-button controllers
Cartridge size: 32k
Sound: Oops, i totally forgot about that. There's no way sound makes sense in this console so mabe play something from youtube in the background or what?
Code: Brainf**k Assembly Language (yes, I made it up)
Brainf**k Assembly Language
BAL is based on a popuar esoteric language brainf**k. For more info check out it's esolangs wiki page, you can find full specification there.
Interface help
In most cases d-pad is used for movement, Z for going back and X for accepting the choice. Only notable differences are in the memory editor itself, where you kan edit cells by holding X and using the d-pad. Pressing Z while holding X will trigger the copying sequence which lets you mark two ends of selection and the beginning of where to paste it. Do this three times on the same cell to paste contents of your clipboard. If you forgot to include an end code for your program you can always press Z+X to force exit. For more info see included docs, it can't be all easy, it's brainf**k after all.
Feedback
I don't think I'll be updating this anytime soon, but I would appreciate any posotive feedback and take note of suggestions. I know BFC is not perfect, especially esthetically. If you notice any bugs please comment what you were doing and how you found them! I'm absolutely sure that BFC is completely bug-free, so if some bugs are still there I want to hint them down ASAP!
Notes
Note 1: program counter is incremented after every command so [ and ] actually jump count * 2 + 1 and count * 2 - 1 respectively
Note 2: since code and data share memory you can modify the code during runtime, be careful not to do that accidentally though.
Note 3: your program memory is actually saved to the cartridge rom, so if you download the console you can save multiple copies of it with different programs. Neat, innit? Unfortunately 256 bytes of standard PICO-8 local storage is too little, so sucks to be you, web users.
Note 4: I use shared map/gfx memory to store the BAL memory, so don't mess with the lower half of the map and sprites unless you know what you're doing.
Version history
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/44933/4_literallythebestthingihaveevermade.png)
Can you hard reset it? I delete some stuff and now the graphics dont work propperly
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/47776/avatar400x400.png)
@Mr. Human Unfortunately you can't do that in other way than just redownloading it. I encourage to save the cart in a new file before editing, this way you can manage multiple projects at once and always have the default one on hand. Hard reset feature will not be implemented because it's impossible with this saving system.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/15232/me-square.jpg)
I'm a little confused, @olus2000. You are using base 8 to get the highest number of 37, yet the highest number you have for base 10 is 31.
Could you please make the language easier to use by using base 10 instead of base 8 ?
Also, Olus2000. I didn't know if you would benefit from being able to load/save external 12288 bytes per unique filename without affecting your sprite/mapper area.
This was something I was working on recently and would solve your problem of overwriting data.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/47776/avatar400x400.png)
@dw817 I will keep using base 8 because I say so. It's brainfuck, it's not supposed to be easy to use :P
I could use an ability to save extra data externally. I was looking into some compression algorithms lately but didn't think of implementing them in this cart which I considered finished. Could you please link some more info on what you were working on?
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/15232/me-square.jpg)
As of today I am working on BrainFreak, @olus2000. But it won't be for Pico-8, not the first iteration, it will be for my RG-350.
And before you say Taco, the Pico-8 emulator for the RG-350, Taco only lets you load and save the standard 256-bytes (64-number) format. It doesn't even recognize the command CSTORE() so ... yeah.
RG-350 first where I can load/save 256k at a pop, and I need this for this iteration. I WILL make one for Pico-8, but probably only after CSTORE() command becomes available, if ever, for Taco.
I will say in trying out your program I am more than suitably impressed at its depth. You REALLY did a great job here and I will always be encouraged by this particular branch of BrainF and refer to it as I build mine.
I will leave you with a snapshot picture of a program I finished writing last Saturday for the RG-350 that lets you program conventionally and saves true 100% QBasic compatible code with immediate option to run on the RG-350 or compile to EXE. I want this as I definitely want to be able to code on the go.
Also the font and characters are hand-tooled. I chose drawing 4-pixels across as the default size in the 8x8 character set as since the screen on the RG-350 is so small, by leaving this much black space between characters makes it that much easier to see.
![](/media/15232/Engine 06-02-21.png)
This is also not BrainFreak, this is the program I will use to write BrainFreak. It runs in DOSBOX and recognizes keystrokes for IBM-pc if the file "IBM.TXT" exists.
If not, it assumes the RG-350 is the input.
So - you're in good company when it comes to writing Fantasy systems within Fantasy systems.
Thanks for the inspiration ! :D
[Please log in to post a comment]