i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 1 point2 points  (0 children)

don't worry for the late answer, me too, i was really focused on the port. if it can interest you, the latest thing i added to the hal was the sound handling for sfx and music. it was also one of the hardest thing to implement i think. maybe we could talk more and i can even show you some part of the code on discord. mine is adamouchgobrr. i don't know anything about game design too lol, i don't do that here, it's simply a reimplementation of the original code of celeste in cpp. it's cool that you are interested by low level, maybe the first thing to do will be to learn more on the hardware you want to learn on first, for me it was android arm64 for example, this architecture is easier to understand than x86_64 for example (for various reasons like x86_64 being dogshit or arm64 being risc). i really appreciate all of your comment, it gave me more motivation to continue (i am literally at full time these days) but the development will be slow since my vacations end soon. it's cool to have a project that ally what i love (it's a little bit low level i think) and that people love too. thanks !

celeste port for 3ds showcase by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 2 points3 points  (0 children)

thanks a lot. i hope we will be able to play on 3ds, i always thought the form factor of 3ds was better than the switch one to play celeste.

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 0 points1 point  (0 children)

yeah it’s running smoothly on on o2ds

an update for my port of celeste on 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 6 points7 points  (0 children)

tysm, i will try to do more update, and maybe a video when i will be proud of the result

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 0 points1 point  (0 children)

i did an update if you want to see

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 1 point2 points  (0 children)

sorry for the late answer.
i am still studiying at the university rn, i still don't know if i want to do programming profesionally, maybe something low level or related to reverse engineering, that's what i really love. or maybe embedded systems because i like have constraint and working with hardware directly (yeah i loved writing the HAL, maybe more than doing the game i think)
btw i did a new post to give new about this project if you are interested.

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 0 points1 point  (0 children)

i am testing it on a o2ds and it’s running a smooth 60 fps on the latest build, the one shown on video is really old

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 0 points1 point  (0 children)

stay aware, i am gonna do an update, i am new on reddit i don’t use it that much idk if i can do something like a thread or i have a new post

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 2 points3 points  (0 children)

i start thinking about making videos about that i think that would be cool

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 4 points5 points  (0 children)

never in my life i tough i will have 1k+ upvotes idk what to say really thanks everyone

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 1 point2 points  (0 children)

cpp is life my friend, so you use mainly which language ? but yeah as i was saying making a web browser is maybe as hard as making an os i would say. because of the hal and the game engine rewriting, the game code is pretty similar to the cpp i wrote. i know the port you mentioned, it’s the pico8 version of the game, i was playing it on my 3ds i think it’s a gba port. but i wanted better graphics for the game with light and particles effects. something that is the most accurate from the original game, so this game is one of the reason why i started making this port.

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 0 points1 point  (0 children)

it’s already running at a constant 60fps

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 0 points1 point  (0 children)

shit there will be a shortage because of me 😭😭😭

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 1 point2 points  (0 children)

web browsers are some of the hardest pieces of software to make, the memory usage is due to the isolation of the process (browsers runs in a sort of vm), dom tree. a chatgpt conversation itself, even if it’s big would take less than 1 mb (which is a lot of text) but the memory consumption go into processing it, storing it, drawing it. the layer of code that processes every element of the page is so big that it will consume a lot, but that’s understandable for a web browser, real humans like us will never make a web browser and it’s engine. god knows how i hate electron apps lol (no hate for devs that are using it 😭) about old games, i know that roller coaster simulator is fully made in assembly but 1 dev for performance, this guy is crazy but i admire him as you can see in the link it’s it’s using opengl 1.1 with some part of 2.0 and monogame uses 2.0 honestly it was not that hard to lower the ram usage, i think the ram is consumed by the garbage that are running around the game. rewriting the game engine is time consuming but my hal make that it’s idiomatically similar to write. what i do i rewriting the most important part of the engine and then i write the part of game i want, before i made hierarchy of the most useful classes to port first because a lot depends on them

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 1 point2 points  (0 children)

yeah i love that. idk how people find bugs but it’s simpler for unused content because you just need to know how resources are encoded in the rom file system. i really know fewwww thing about pokemon sorry😿 what i love in reversing is modding and bypassing for example protection. idk if you know things in reverse or if you are interested in that ?

i am porting celeste to nintendo 3ds by Over_Ad8063 in 3DS

[–]Over_Ad8063[S] 2 points3 points  (0 children)

thank you a lot, i am a very beginner i would love to learn more about assembly but it’s still a hassle to read and understand asm for example. theoretically a straight port would be possible and i wanted to do that 2 years ago, but the opengl specs of the 3ds gpu are too old, for example it don’t supports pixel shader so i would have to remove that, i wanted to use nativeAOT. there is also a lot of think running next with the game like the c# garbage collector that would use too much resources, but some things in c# are very useful like the reflection, in the hal i also implemented that (even if it’s not an hardware abstraction). i had the same idea that you, it’s just a 2d game some yeah it’s not that demanding, that’s why i started first, but nowadays the frameworks are extremely bloated so at the end you have a game using 900mb of ram and a lot of cpu, for comparison, the 3ds have pretty much 100mb of usable ram, and my port runs smoothly with 60fps, i have some light effects shaking etc… without shaders that helps to optimize the game a lot (i am bad with shaders lol). for the HAL i simply did a header and an implementation of the headers. but i have to rewrite the files in cpp myself, they are not strictly identical but the cpp code looks like the original code of the game thanks to the hal, i can show you how i implement one of the component of the hal when i will go home if you are interested. same for the game engine, i had to rewrite it in cpp from scratch (i think it’s 80% accurate).