AGameAWeek - 3DS

Discussion in '3DS - Homebrew Development and Emulators' started by Jayenkai, Apr 14, 2018.

  1. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    @Shubshub has been nagging me for ages to hop onto the 3DS Homebrew scene.
    @Another World is always banging on about it on Twitter.
    @spinal_cord says I'm late to the party, and.. well.. they're all right.

    Better late than never, I suppose!

    Game List

    The following games are currently available as 3DS Homebrew. Click on through to the download page, and it should be fairly obvious where the download is.

    Roland Eats a Stale Biscuit - A curiously difficult puzzle game.
    Micro Clampett - A colourful platformer.
    On a Space Shooting Trail - A fast paced Horizontal Shooter.
    Flappadiddle-Doo - A flapping platform adventure.
    Franken Hopper - A deadly flaming platformer.
    Squashly Boop - Booping for Points
    Blockman Gets Retro - A Dot-Munching puzzler.
    NeoPlat Blast - A frantic single-screen Platformer.
    The Link Janitor - A gentle colour-linking puzzle game.
    Pogo the Fridge - Hop and Squish the rebellious fruit.
    Radial Warning - Chaotic shooting in a dish
    Might of the Balls - Paint the tiles red. (well, more a sort of orangey colour..)
    Generic Snake Clone - A generic Snake clone.
    Centipong Rebound - Colourful ball-bouncing insanity.
    Quadoban 2 - Curious Crate Shifting

    If at any point I forget to update this list, you can find all the available 3DS Homebrew games on my site via this link.

    -=-=-

    What is AGameAWeek


    Over the past .. far too many years, I've been developing AGameAWeek.
    For the most part, I try my best to stick to a schedule of one game each week, although when busy or resting or any number of other excuses, I don't always achieve that goal.
    Since August 2008 I've created over 300 games under the AGameAWeek name, ranging from obscure little platformers, to crazy space shooters, bizarre puzzle games, and more.

    With each passing game, I'm learning more and more, and getting faster at what I'm able to achieve within such a short timeframe.
    Whilst I might still occasionally putter out "Generic snake clone of the week", there are other times when I can make a 300 stage Picross clone, or a 1000 level dungeon crawler, or a sadistically difficult 80 level Sokoban-styled puzzler.
    A lot of the games I create are highscore-battlers, simply because those are the types of games that I enjoy playing most often. Feel free to share your best scores with your friends, and become the ultimatest bestestest player!!

    All games so far are available at AGameAWeek.com. There are many to browser through for Windows, a bunch for HTML5, a selection of Original DS Homebrew, some for Mac, Linux and AndroidTV, as well as a few iOS game, too. Soon there will be 3DS, too!
    Hopefully you can join me for the ride.

    -=-=-

    Original Post

    (I've come a long way in a short time!)

    Over the past few weeks, I've been rewriting chunks of my AGameAWeek C++ Framework so that it can be used to compile projects for the 3DS, and after mountains of tweaking and poking and prodding, I'm finally starting to see a fairly decent result.
    Right now I'm battling with memory limitations, and trying to figure out the fastest way to draw oodles of stuff on the screen, and will then need to work on audio, but as of about an hour ago, I was finally able to get a nice little test game up and running on the system.



    Things to ignore in the above video.
    1. My inability to play the game well using just one hand.
    2. The sound of the washing machine doing a full-spin.
    3. The sounds of my mother hammering together a small set of shelves!

    Things that need to be fixed.
    1. I have no idea why the font is so weirdly squished together. Something's up with the kerning, and I need to look into it.
    2. There should be a background, but my buffer code hasn't been integrated, yet.
    3. There's no audio, unless you count the hammering and the washing machine. These sounds will not be in the final game!

    Things to be happy about.
    1. That's a mostly-working game! :D
    2. That's a normal everyday AGameAWeek game, so any and all future AGameAWeek games will hopefully be just as portable to 3DS. :D
    3. Coming Soon - AGameAWeek!!! :D
     
    Last edited by Jayenkai, Sep 4, 2018 - Reason: I MAIKED MORR!
  2. Shubshub

    Shubshub The Shubinator

    Member
    6
    Oct 16, 2009
    New Zealand
    The dark part of your house
    Yayyyy Cant wait!
     
    tozevleal likes this.
  3. Another World

    Another World Emulate the Planet!

    Former Staff
    11
    Jan 3, 2008
    Colombia
    From Where???
    hi jay. i am so happy to see this post. what's in store?? a 3ds retro raider with a mini arcade game that plays a plat dude adventure? oh god, i hope so!

    it's nice to see you interested in the 3ds.

    cheers!
    -another world
     
    tozevleal likes this.
  4. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Taking baby steps, right now. I seem to have quite a knack for adding random commands which the emulator handles without a beat, but the hardware throws an almighty crash at!
    Having to learn not to overstep certain boundaries. It's been a long time since I had to do memory management!!

    I’ve still to figure out how I’m doing audio, and additionally what I’m going to be doing for the bottom screen, but steps are being taken and the hopefully all should be good to go, soon.

    As for what games. Well, this is literally my new standard AGameAWeek engine, now. I’ve decided to scrap any and all modern languages, and go for a bog standard c++ engine, so that (hopefully) any and all future games should work on all possible targets.
    Or, at least, that’s the plan anyway...
    Who knows how well it'll go down!
     
    tozevleal likes this.
  5. Joom

    Joom  ❤❤❤

    Member
    13
    Jan 8, 2016
    United States
    The 3DS will now be the console with the most homebrew ever.
     
    ry755, RubenCantuVota and tozevleal like this.
  6. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Not yet it won’t!
    Still battling with memory complications. I originally planned to load my desktop sized art assets into memory, scale them down, and then free the larger assets, but apparently the 3DS doesn’t like all the loading and freeing!! Instead, I’m goi;g to have to do it all by hand.
    Grrr!

    But I’m getting there. Slowly but surely.
     
    tozevleal likes this.
  7. Joel16

    Joel16 Ils ne passeront pas

    Member
    10
    May 8, 2011
    United States
    Doesn't concern you.
    Sorry to burst your bubble but probably nothing's going to beat the psp homebrew scene :d
     
    tozevleal likes this.
  8. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Made some fairly significant progress, today. I’m still getting crashes when quitting, but I’m also able to play all my current test engines on the 3DS, without significant issues, which is nice.
    Still todo.. save files or scores, and then maybe figuring out what I’m doing with audio.. Not sure if OGG streaming will be doable!! But, hey, I might as well try!

    So, yeah, things are definitely getting organised, and with any luck I might be releasing the first test game by the end of the month.
    Or at least, that’s currently my target.
    I imagine everything will go horribly wrong once I try to add audio into the mix!!!



    Oh, and then doing the whole 2nd screen stuff, and figuring out the best way to do 3D'y..
     
    Last edited by Jayenkai, Apr 17, 2018 - Reason: I KAN HAS GRAMMAR
    8BitWonder, tozevleal and PypeBros like this.
  9. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    I tried out Flappadiddle-Doo again, today, and it was very very broken!!

    -=-=-

    The tweaks I've been doing to the 3DS part of the framework have left it in tatters.
    The switch to smaller 3DS specific spritesheets, smaller logos and other things had resulted in it being mostly a black screen when booted up.

    So, I spent an hour or so rejigging the spritesheets, tweaking minor bits of code. I'll need to go further in and actually redraw most of the bird sprites, as they're all a little gnatty, after the lazy quick scaling that I did.
    But otherwise it ended up working on the 3DS reasonably well.
    Except for 2 things.
    1. Still no bloomin' audio.
    but more importantly..
    2. The game was suffering from MAJOR slowdown!

    The last time I had a Flappadiddle test running, I hadn't yet added primitive-drawing, so most of the particles, all of the trail, the wave at the bottom of the screen.. That was a LOT of drawing that the system simply wasn't doing, and so it wasn't really an issue that it was done using Immediate drawing calls.

    But now it had a whole boatload more things to draw, and it wasn't very happy doing it all!

    So, I took the time to rejig the drawing code.
    I flipped the simple toggle I'd left at the top of the code to switch drawing from Immediate back to VBO-based drawing routines.

    I'd initially ignored these "better" functions because spritesheet switching wasn't working right, but over the past month (*checks* Was that only a week ago!?!) I've learned a fair deal about doing 3DS Homebrew, and now it's all working exactly as it oughta.

    As such, the game now just has one of those two flaws remaining..
    .. It's still no bloomin' audio!!



    It also doesn't do saves, yet, but hopefully that won't be as complicated as trying to get the audio to work.
    .. Maybe..

    But it's working, and it's nice and silky smooth, and it plays absolutely great!
    :D
     
    Last edited by Jayenkai, Apr 20, 2018 - Reason: Timeline Alteration!
    tozevleal likes this.
  10. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Getting ever so closer to my first release.
    Today I spent some time working on the whole "that top screen does 3D, you know!!" stuff.
    I’ve added a simple Depth command to my Framework, and got the two "screens" (left and right eye) to render with slider based offset. Essentially, my 2D games can at least have an ounce of 3D depth, even if it does just become a case of simple layer depth effects.

    I’ve also started work on the bottom screen, removing the debug stuff, and adding a simple method to render to there.
    I now need to add touchscreen abilities, and shuffle the main menu down there, along with ingame scores.

    I’m also REALLY struggling to get sound working, at the minute, so that's taking a lot of my time...
    but ..
    I am definitely getting closer!!

    Maybe next week??!

    [​IMG]
     
    Last edited by Jayenkai, Apr 24, 2018 - Reason: I HAS ADIDD A PITCHUR
  11. ddraco

    ddraco GBAtemp Regular

    Member
    2
    Sep 12, 2015
    Germany
    That sounds pretty interessting. Is there a github or anything for the base framework?
     
  12. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Probably not.. But yes.. .. But no.. But maybe..

    At some point, I'll definitely be releasing *something* on my website, but you need to know that, the way I code isn't particularly reader friendly..
    Although it'll all be there, you might not be able to understand a single bit of it!

    Years of coding AGameAWeek has reduced my ability to code "nicely" into what can only be described as Abstract Spaghetti Code - EXTREME!!. .. Except worse than that!!
    The way I code now, I tend not to worry about other people ever reading it, (because, over 400 games in, nobody ever has!!) and focus instead on just getting the end result to work as well as I can. And usually trying to do it all within the alarmingly small timeframe of AGameAWeek!

    I have a strange ability to remember, almost photographically, where code is, what the code does, and basically how everything fits together, without needing to jot things down. As such, commenting, writeups and a lot of "standard" coding practices are all but ignored by me. One day that'll bite me in the arse, but I'm doing ok with it, so far!!
    It really does result in a "For my eyes only" amount of gobbledy-gook coding, and.. once posted.. I expect nobody to ever dare poke around inside.

    So.. Yes and no.. It'll be posted eventually, but you definitely wouldn't like it!
    It certainly isn't something I'd put onto GitHub or the like. ..
    Oh... The comments I'd receive!!! Yikes!!!
     
    tozevleal likes this.
  13. ddraco

    ddraco GBAtemp Regular

    Member
    2
    Sep 12, 2015
    Germany
    Well, thats kinda sad. But I see your point. I'd imagine people would've liked to help the project or anything. But nonetheless, good luck.
     
    tozevleal likes this.
  14. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Today's been rather productive, as I've ironed out the last few random crashes that were occurring, including the "Hangs when you try to close it from the HomeScreen" bug that's been doing my head in for the past week or so.

    I've now got score saving working, using standard fopen() methods. It seems a teensy bit slow, but is at the very least working.

    The touchscreen menu/touch also now works, albeit in a slightly wonky fashion that I can probably fix up. That's all down to the amount of scaling the framework's doing to take my HD-based games and scrunch them down to the tiny 3DS resolution!! There's all manner of sprite scaling differences involved. Sometimes the engine uses the original HD sprites and scales them down when drawing them, whilst other times it uses special 3DS resolution-specific versions of the same images and so scales them differently. This all leads to some fairly chaotic maths to get everything to line up, and then trying to do my normally simple touchscreen "Draw a button using XYZ Image" code, things get fairly complicated!
    Anyhoo, it's "mostly" working, now.

    Upcoming Schedule
    Monday : Last ditch attempt to get OGG music streaming to work. I have a method in mind, but it's going to require a hefty rewrite of the audio code in order to get it to work. It's something I didn't want to have to do, but it's looking like it's the only way to make it work. Bah humbug!

    Tuesday : Test game. I'm not sure which of the workable games should be my test game, but I'd rather not have Flappadiddle be tainted by screams of "It doesn't work right!!" I'll probably do something a little more clinical, like Roland Ate a Stale Biscuit, or Slithering Waters.
    Note : Even if I can't get the OGG working, I'll still release the test on Tuesday.

    Wednesday : Hope that you guys all test out the test game enough that I can work out any kinks that need fixing.
    Thursday : Same again.. I'm expecting a lot of crinkles that need ironing!

    Friday : Release Day! Compile whatever will work and get gaming goodness going!!

    That's the plan, anyway.
    Hopefully it works out!

     
    Last edited by Jayenkai, Apr 29, 2018 - Reason: I keep writing "DS" instead of "3DS"! Silly me!!
    tozevleal, Joel16 and Minox like this.
  15. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    *copy and pasted from AGameAWeek.com*

    -=-=-

    3DS Homebrew test.. With a Biscuit

    If you head over to the Roland Eats a Stale Biscuit page, at AGameAWeek.com, you'll find a lovely little .3dsx download button. Mmmm..

    What should work
    The game!!
    The 3Dness (albeit subtle in this game! It's more noticeable in the Credits screen)
    The two screens
    The audio (except for the background music, and the jingle's apparently too big to fit into memory, too, so that's currently MIA)
    Save data, so you don't have to redo from start every time!

    What definitely doesn't work
    In the options menu, there's an option to turn on FPS display. I've forgotten to put that back into the graphics engine. It's currently outputting to the text based "Console" layer, which has been switched off! D'oh!
    The Music and Jingle don't work. I AM trying to solve this, but it involves a complete rewrite of the audio code, and I really haven't been in the mood to do that, today!!

    What's a bit quirky
    Some of the font can be ... wobbly. I'm not sure why that is! It's being looked into.

    I do all my saving during the transition from the game's closure, back to the menu (where the Game Over/Level Complete screen appears)
    Typicaly, the playing of the Jingle hides the fact that there's a slight pause whilst the game's saving, but without that happening, and in conjunction with the amount of gubbins the game is saving, along with the slower pace of the 3DS, it's quite a noticeable pause!
    Apologies for that!!
    I'll try my best to make my Framework deal with that a little better, in the future.

    What needs testing
    That it runs at all for you. If you can't run a .3dsx file, then please teach me about other 3DS homebrew techniques that you might be using. I'm new to this!

    Please experiment with various methods of closing and opening the game, and let me know if anything locks up. It shouldn't, but I was having "home / close" freeze up on me until just yesterday, so .. might not be 100% yet!

    Also, be sure to check that the save data saves. It should save to "path of 3dsx/Settings_AGameAWeek.sav" and "path of 3dsx/Save_???.sav". A reload of the game should hopefully bring the saved data back up, unlocking all previously unlocked levels.

    Please report any and all oddities, and be sure to let me know which 3DS you're using, and your chosen methods of getting things running, and I'll look into finding out why things aren't quite perfect.

    What I already know
    Yes, the game is shockingly difficult.
    Yes, every level is beatable.

    Download
    You can Download Roland Eats a Stale Biscuit, here.
    Please do let me know how it goes.
    I've got a handful of other games more or less ready for release, but only once I know that everything's working the way it should be.

    Thanks for playing, and many thanks for any feedback you can give.
     
    Last edited by Jayenkai, Apr 30, 2018 - Reason: Bbcode errorzz
  16. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    I sat around waiting for feedback from the GBATemp community, in the hope that I might be able to fix up any potential issues with my 3DS Framework.
    Nothing arrived.
    I've left it there for 3 days, and... Nothing...

    So, here's release #2, then. :\
    Micro Clampett for 3DS Homebrew.



    You can Download Micro Clampett here.

    The game seems to work flawlessly on my hacked 3DS system, but mileage may vary, as there are many different hack methods to get these things running, and a multitude of different 3DS systems.
    If the game fails to run for you, please (PLEASE!) let me know what you're using, and how you've hacked, in the hope that I can figure out why the game isn't running.

    Without feedback, any issues that I don't know about are only going to get worse, and worse, and worse, as I release more and more games that use the same overall framework..

    And, if it DOES work, be sure to let me know that, too, so that I know I'm on the right track.

    Thanks for any and all feedback.

    You can Download Micro Clampett here.
     
    Joel16 likes this.
  17. Inthescene

    Inthescene Advanced Member

    Newcomer
    2
    Feb 18, 2018
    Canada
    htraE
    For me, both of them were flawless. I really have no complaints. Nice job, and looking forward to future releases.
     
  18. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    \o/yeay\o/ feedback!!!

    Thanks for testing.

    More to come :)
     
    Inthescene likes this.
  19. blujay

    blujay GBATemp's Official Warthog

    Member
    10
    GBAtemp Patron
    blujay is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Nov 2, 2015
    United States
    Gilbert, Arizona
    Just saw this! I am really impressed!

    Everything looks good, and am looking forward to this kind of thing.
     
  20. Jayenkai
    OP

    Jayenkai Makes Games

    Member
    5
    Dec 25, 2007
    United Kingdom
    Bolton, England
    Today, I've rejigged a lot of the framework's opening memory gubbins, although not the way I'd've liked.
    In the end, rather than solving my memory management issues, I actually ended up stripping out the largest array completely, meaning that all additional lines (ship trail, bullet trail, explosion trails) in "On a Space Shooting Trail" are all now missing on the 3DS edition.
    They're not anything you'll specifically miss, especially on the tiny 3DS screen, but .. they're definitely gone!

    Anyhoo, after tweaking away, I finally got On A Space Shooting Trail running on 3DS, so .. Upload Gets!
    It includes oodles of 3d-ness, but with everything being thin and small, it's not really all that noticeable.
    Aw well..

    [​IMG]

    I've uploaded a fixed 3DSHomebrew version of Micro Clampett (because I'd previously forgot to set the music volume!) as well as the new (for 3DS) space shooter, On a Space Shooting Trail.

    Both should be working fine, but as always, let me know if they don't!
     
    Last edited by Jayenkai, May 5, 2018
    Inthescene likes this.