Retro Game Builder (make your own snes games)

Discussion of hardware and software development for Super NES and Super Famicom. See the SNESdev wiki for more information.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
poorstudenthobbyist
Posts: 252
Joined: Fri Jun 24, 2016 4:20 pm

Re: Retro Game Builder (make your own snes games)

Post by poorstudenthobbyist »

Lol, I used to make games and movies in PowerPoint too. Used to make each slide one "frame" and hold down the spacebar to make it play.

Eventually found out about Flash and made some games in that instead haha
User avatar
retrogamebuilder
Posts: 15
Joined: Sat May 16, 2020 1:45 am
Contact:

Re: Retro Game Builder (make your own snes games)

Post by retrogamebuilder »

Nikku4211 wrote: Sun May 24, 2020 2:32 pm So if the visual coding system will be like Unity, then I really hope all the code and the overall engine will be very optimised. Optimisation is very important for such an old system like the SNES. I'm not about to try to make a whole shoot 'em up, only to find out that the Retro Game Builder engine chokes when there's only 10 enemies on screen.
You're not the first person to raise this concern. I'll be doing a number of things including general code optimization. The software will use FastROM by default to get the best clock speed. In addition to low-level logic (simple arithmetic, branching, etc.), there will be a number of higher-level node types available for things like playing music, animating sprites, and handling collisions. This will help reduce overhead.

You'll still be faced with the speed limitations of the hardware (the SNES was never a great platform for intense shmups), but I'll do everything I can to provide good performance out of the box.

If you need the absolute best possible speed the platform can provide, then nothing beats hand-optimized assembly language. But that's not the purpose of this tool. If you're concerned about making a whole game and then discovering that it's too slow, then you could always create a test screen with the maximum number of enemies you expect to display, and see how it goes.
User avatar
Nikku4211
Posts: 569
Joined: Sun Dec 15, 2019 1:28 pm
Location: Florida
Contact:

Re: Retro Game Builder (make your own snes games)

Post by Nikku4211 »

retrogamebuilder wrote: Mon May 25, 2020 2:15 am You're not the first person to raise this concern. I'll be doing a number of things including general code optimization. The software will use FastROM by default to get the best clock speed. In addition to low-level logic (simple arithmetic, branching, etc.), there will be a number of higher-level node types available for things like playing music, animating sprites, and handling collisions. This will help reduce overhead.

You'll still be faced with the speed limitations of the hardware (the SNES was never a great platform for intense shmups), but I'll do everything I can to provide good performance out of the box.
Awesome. I'm not expecting the best performance, but this tool can be useful as a base to complete a game before hand-optimising it in assembly, so that I can focus on things like general design and such before tweaking the engine for better performance, rather than getting caught up in assembly code completely breaking due to 1 little mistake here and there.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
Erockbrox
Posts: 397
Joined: Sun Nov 23, 2014 12:16 pm

Re: Retro Game Builder (make your own snes games)

Post by Erockbrox »

I do not expect to see SA-1 support in the first iteration of Retro Game Builder, but if the Kickstater is really successful then maybe you can make SA-1 support a stretch goal or add in SA-1 support in a later version of Retro Game Builder.

If SA-1 support is added to Retro Game Builder then this will most likely not be compatible with the cartridge flasher to flash your game on a real SNES cartridge, but that is understandable and okay because the SD2SNES has the capability to run SA-1 games via FPGA.

Once you get SA-1 support then the SNES becomes a powerhouse and most likely won't suffer from any slowdown. The SA-1 chip is very similar to the original SNES CPU and thus uses the same ASM language. It's basically just a SNES CPU that is running at a higher clock speed. Supporting the SA-1 chip should be something to consider eventually as it would be a very powerful feature to have.

https://www.youtube.com/watch?v=pmJyQiL9wYg

https://www.youtube.com/watch?v=fTkKE1NURrY
User avatar
Nikku4211
Posts: 569
Joined: Sun Dec 15, 2019 1:28 pm
Location: Florida
Contact:

Re: Retro Game Builder (make your own snes games)

Post by Nikku4211 »

Yeah, please make SA-1 a stretch goal, as it is a 65816 at a faster speed.

I mean, it can even do polygons. Yes, 3D polygons.

I don't think Super FX will ever be a stretch goal but at least SA-1 will fill in the gap.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Retro Game Builder (make your own snes games)

Post by tokumaru »

That's not nearly as impressive when you consider that, with clever coding, even the NES can do untextured polygons with better resolution than this, on a slower CPU without the help of a coprocessor. The NES demo doesn't include a complex object like the Mario model in the SNES program, but at this kind of frame rates, why bother?

BTW, the NES demo uses illegal opcodes, so not all emulators are able to run it.
User avatar
retrogamebuilder
Posts: 15
Joined: Sat May 16, 2020 1:45 am
Contact:

Re: Retro Game Builder (make your own snes games)

Post by retrogamebuilder »

Thanks for the suggestions! After all the core functionality is complete, I'll ask the community what new features they'd most like to see and I'll consider that when prioritizing future development. I'll definitely look into SA-1 support if there's enough interest.

As far as making it a stretch goal specifically, that's a bit tricky. My understanding is that the estimated delivery date stays the same with or without stretch goals. I'm just one developer working alone, and I don't want to rush to release if it means sacrificing quality. I'll think it through carefully and try to come up with a good approach.
User avatar
Nikku4211
Posts: 569
Joined: Sun Dec 15, 2019 1:28 pm
Location: Florida
Contact:

Re: Retro Game Builder (make your own snes games)

Post by Nikku4211 »

retrogamebuilder wrote: Mon Jun 08, 2020 11:16 am As far as making it a stretch goal specifically, that's a bit tricky. My understanding is that the estimated delivery date stays the same with or without stretch goals. I'm just one developer working alone, and I don't want to rush to release if it means sacrificing quality. I'll think it through carefully and try to come up with a good approach.
Yeah, please don't rush it. You need all the time you can get so that we can have the best quality implementation.
tokumaru wrote: Sun Jun 07, 2020 6:41 pm That's not nearly as impressive when you consider that, with clever coding, even the NES can do untextured polygons with better resolution than this, on a slower CPU without the help of a coprocessor. The NES demo doesn't include a complex object like the Mario model in the SNES program, but at this kind of frame rates, why bother?
I already kind of knew every CPU can do filled polygons in some manner. That NES demo is very impressive, and I think that if an engine much more optimised than the one I linked was developed for the SA-1, and if it output to 2BPP graphics like in that NES demo, it might have been much faster with those same models.

Or you can try to port it from NES to SA-1, but I don't know anything about that.
tokumaru wrote: Sun Jun 07, 2020 6:41 pm BTW, the NES demo uses illegal opcodes, so not all emulators are able to run it.
And just what are these illegal opcodes? It makes me curious.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Retro Game Builder (make your own snes games)

Post by tokumaru »

Nikku4211 wrote: Mon Jun 08, 2020 1:10 pmAnd just what are these illegal opcodes? It makes me curious.
Each operation that the 6502 can do has an 8-bit code assigned to it, but the CPU doesn't use all possible 256 codes, and as a side effect of how the CPU decodes these instructions, some of the unused codes (also called undocumented/unofficial/illegal opcodes) end up executing stable operations that are normally combinations of multiple official operations. They can be a little nonsensical, since the operations they perform weren't designed to make sense, but when used carefully you can save a bit of time here and there (e.g. there's an instruction that decrements and compares a value, which would normally need 2 official instructions). Anyway, unofficial instructions can improve the performance of some algorithms, but the difference normally isn't anything huge.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Retro Game Builder (make your own snes games)

Post by psycopathicteen »

retrogamebuilder wrote: Mon May 25, 2020 2:15 am
Nikku4211 wrote: Sun May 24, 2020 2:32 pm So if the visual coding system will be like Unity, then I really hope all the code and the overall engine will be very optimised. Optimisation is very important for such an old system like the SNES. I'm not about to try to make a whole shoot 'em up, only to find out that the Retro Game Builder engine chokes when there's only 10 enemies on screen.
You're not the first person to raise this concern. I'll be doing a number of things including general code optimization. The software will use FastROM by default to get the best clock speed. In addition to low-level logic (simple arithmetic, branching, etc.), there will be a number of higher-level node types available for things like playing music, animating sprites, and handling collisions. This will help reduce overhead.

You'll still be faced with the speed limitations of the hardware (the SNES was never a great platform for intense shmups), but I'll do everything I can to provide good performance out of the box.

If you need the absolute best possible speed the platform can provide, then nothing beats hand-optimized assembly language. But that's not the purpose of this tool. If you're concerned about making a whole game and then discovering that it's too slow, then you could always create a test screen with the maximum number of enemies you expect to display, and see how it goes.
I used to think I knew everything about optimizing, but looking back I think I was a little too obsessive compulsive about it. I'm starting to regret the idea of using the DP register as an object memory pointer, because it's limited to only 8kB or wram, and I realized that stuff like multijointed sprites would be a lot more convenient with a separate pool of object slots reserved for multijointed sprites, even if it requires more total object slots than it would be possible for the sPPU to display in sprites anyway. On the other hand I don't want to do a ton of register juggling when I need another index register so I don't know what is objectively better.
User avatar
Controllerhead
Posts: 314
Joined: Tue Nov 13, 2018 4:58 am
Location: $4016
Contact:

Re: Retro Game Builder (make your own snes games)

Post by Controllerhead »

retrogamebuilder wrote: Mon May 25, 2020 2:15 am There will be a number of higher-level node types available for things like playing music, animating sprites, and handling collisions.
How do you plan on implementing "nodes" to run in a 65c816 ASM or C engine?
Image
User avatar
retrogamebuilder
Posts: 15
Joined: Sat May 16, 2020 1:45 am
Contact:

Re: Retro Game Builder (make your own snes games)

Post by retrogamebuilder »

When I say "nodes", I'm referring to the visual components of a node graph (what I call a "logic flow"). They're used to generate assembly language code, but they don't actually run anywhere. They're part of the visual scripting interface and just an abstraction.
User avatar
Controllerhead
Posts: 314
Joined: Tue Nov 13, 2018 4:58 am
Location: $4016
Contact:

Re: Retro Game Builder (make your own snes games)

Post by Controllerhead »

retrogamebuilder wrote: Wed Jun 10, 2020 11:00 am When I say "nodes", I'm referring to the visual components of a node graph (what I call a "logic flow"). They're used to generate assembly language code, but they don't actually run anywhere. They're part of the visual scripting interface and just an abstraction.
That isn't a bad answer, but i was hoping for a bit more detail. How far along are you on the "logic flow" builder in your editor? Can you generate ASM or a ROM file currently with any of that logic?
Image
User avatar
retrogamebuilder
Posts: 15
Joined: Sat May 16, 2020 1:45 am
Contact:

Re: Retro Game Builder (make your own snes games)

Post by retrogamebuilder »

Controllerhead wrote: Wed Jun 10, 2020 12:21 pm That isn't a bad answer, but i was hoping for a bit more detail. How far along are you on the "logic flow" builder in your editor? Can you generate ASM or a ROM file currently with any of that logic?
Not far. :) I wanted to get palettes, tilesets, and tile maps done first so I can do something interesting with the logic. I'm about 80% of the way there. I do have some non-interactive node rendering tests. I can also generate ROM files dynamically and change simple things like background color, but it's not hooked up to the logic flows. I've basically created enough little tests to prove to myself that this can work.

The ASM code is generated using templates/snippets, but they will do more than just string substitution. Node types can have custom code generators, which will be handy for optimization (generating completely different code based on input parameters or other context). The ASM is assembled with ca65.

Of course, these are all implementation details that might change, and that typical users won't have to care about. I hope that satisfies your curiosity somewhat.
User avatar
Controllerhead
Posts: 314
Joined: Tue Nov 13, 2018 4:58 am
Location: $4016
Contact:

Re: Retro Game Builder (make your own snes games)

Post by Controllerhead »

retrogamebuilder wrote: Wed Jun 10, 2020 2:34 pm I hope that satisfies your curiosity somewhat.
It does. I am glad you have a framework and a ROM generation proof of concept with background color going. Good steps. Best of luck!
Image
Post Reply