{"id":13417945,"url":"https://github.com/dbeef/spelunky-ds","last_synced_at":"2025-03-15T02:32:04.632Z","repository":{"id":205638723,"uuid":"124692177","full_name":"dbeef/spelunky-ds","owner":"dbeef","description":"Spelunky remake for NintendoDS","archived":false,"fork":false,"pushed_at":"2019-06-29T10:19:11.000Z","size":197618,"stargazers_count":88,"open_issues_count":0,"forks_count":4,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-07-31T22:40:02.694Z","etag":null,"topics":["cpp","gamedev","homebrew","libnds","nintendo","spelunky"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbeef.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-03-10T19:36:22.000Z","updated_at":"2024-04-15T00:04:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"0d52409b-6f64-4906-a2a6-ddc1fb4f1bcd","html_url":"https://github.com/dbeef/spelunky-ds","commit_stats":null,"previous_names":["dbeef/spelunky-ds"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbeef%2Fspelunky-ds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbeef%2Fspelunky-ds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbeef%2Fspelunky-ds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbeef%2Fspelunky-ds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbeef","download_url":"https://codeload.github.com/dbeef/spelunky-ds/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243675063,"owners_count":20329202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","gamedev","homebrew","libnds","nintendo","spelunky"],"created_at":"2024-07-30T22:00:55.953Z","updated_at":"2025-03-15T02:32:04.623Z","avatar_url":"https://github.com/dbeef.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003e Spelunky® remake for the NintendoDS. \u003c/h1\u003e\n\u003cp align=\"center\"\u003e(a.k.a SpelunkyDS)\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://travis-ci.org/dbeef/spelunky-ds\"\u003e\u003cimg src=\"https://api.travis-ci.org/dbeef/spelunky-ds.svg?branch=master\" alt=\"Travis build status icon\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://gbatemp.net/threads/spelunkyds.507192/#post-8044792\"\u003e\u003cimg src=\"https://img.shields.io/badge/GBATemp-Thread-blue.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://github.com/dbeef/spelunky-ds/blob/master/readme/gameplay.gif\" alt=\"Works on real NDS!\" width=\"240\" height=\"340\"\u003e\n\t\u003cimg src=\"https://github.com/dbeef/spelunky-ds/blob/master/readme/n3dsxl.gif\" alt=\"Works on real N3DSXL!\" width=\"240\" height=\"340\"\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eTo-do list as for now\u003c/h2\u003e\n\n- ✔ Implement shopkeeper logics and randomly spawned shops\n- ✔ Implement damsel\n- ✔ Implement caveman\n- ✔ Implement skeleton\n- ✔ Implement arrow trap\n- ✔ Fix rope logics - if thrown, when it touches bottom of some tile above it or it reaches its maximum travel distance of 8 tiles up, then it should expand to the bottom. Now it's the opposite - it expands as it travels upwards.\n- ✔ Implement cape and jetpack\n- 🗙 Putting project on Travis\n- ✔ Implement 4 layers system - top one for the console and HUD, bottom one for tilemap and the rest for other creatures\n- 🗙 Tune-up the level generator; make it more random; add random events like snake well\n- 🗙 Implement music using streaming from filesystem - [I elaborated a bit on this on my blog](https://dbeef.wordpress.com/2018/05/24/some-words-on-developing-spelunkyds/)\n- 🗙 Pausing\n- 🗙 Jars dropping loot\n- 🗙 Ghost when spending too much time on level\n- 🗙 Shake screen when dropping a bomb\n- 🗙 Add github link to the main menu's copyrights sprite - so people would find the current version even if it was downloaded from some other source\n- 🗙 Attempt to make levels a bit bigger (current size is 512x512, what I can probably make is 1024x512 or 512x1024, though not sure of that)\n\nObviously I omit things like implement Olmec or implement lava city - let's finish cave level first.\n\n\u003ch2 align=\"center\"\u003eKnown bugs\u003c/h2\u003e\n\n- 🗙 Though overall randomness of the generator is improved it sometimes makes some ugly structures, to be fixed later\n- 🗙 I messed up a bit with collision detection\n- 🗙 Arrow trap is triggered even if there's a tile (or tiles) between some moving object and the trap\n- 🗙 Once thrown chest can't be opened\n- ✔ Sometimes there's a level where there are spikes just hanging in air\n- 🗙 Sometimes you can loose your items (shotgun, pistol) when changing levels\n- 🗙 UI bugs - you can throw rope / drop bomb in scores screen\n- 🗙 Damage system appears to be broken in terms of shopkeeper (you can't throw arrows, rocks, jars, etc on him)\n- ✔ There's a bug when carrying damsel while sprinting through spikes\n- 🗙 There's a bug when jumping on more than one NPC (snake, bat, etc) at the same time\n- 🗙 Displaying loot in level-transition screen\n- 🗙 Shopkeeper is quite dumb, easy to steal\n- 🗙 Bullets can collide with jetpack, so it can work as a bulletproof vest\n- 🗙 Blood drops / bullets can trigger arrow trap\n- 🗙 Game tends to crash after some time of playing (at least on my vanilla DS) \n\n\u003ch2 align=\"center\"\u003eBuilding\u003c/h2\u003e\nIn order to compile this application on your own, you will need [devkitPro](https://devkitpro.org/) with the devkitARM toolchain, plus the necessary tools and libraries. devkitPro includes `dkp-pacman` for easy installation of all components:\n\n```\n $ dkp-pacman -Syu devkitARM general-tools dstools ndstool libnds libfat-nds\n```\n\nOnce everything is downloaded and installed, `git clone` this repository, navigate to the folder in which it was cloned, and run `make` to compile the application. If there is an error, let us know.\n\n\u003ch2 align=\"center\"\u003eTroubleShooting\u003c/h2\u003e\n\n- If audio does not work, launch the application using TWiLightMenu++\n\n\u003ch2 align=\"center\"\u003eDebugging\u003c/h2\u003e\nTo compile SpelunkyDS with assertions fired up, type \"make DEBUG=1\" when compiling.\nDebugging seemingly random crashes is possible only on an emulator, which will provide last executed line:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/dbeef/spelunky-ds/blob/master/readme/desmume_output.png\" alt=\"Desmume output\"\n width=\"489\" height=\"30\"\u003e\n\u003c/p\u003e\n \n\u003cp\u003e Calling \u003cb\u003e addr2line \u003c/b\u003e: \u003c/p\u003e\n\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/dbeef/spelunky-ds/blob/master/readme/debugging.png\" alt=\"Calling addr2line\"\n width=\"670\" height=\"55\"\u003e\n\n\u003cp\u003e What would be nice to add is printing to emulator's console for debugging purposes. \n libnds ships such function calls (nds/arm9/console.h), but they work only on an emulator called nocash, which is Windows only. \u003c/p\u003e\n\u003cp\u003e Please contact me if you know any Linux NDS emulator that supports printing to terminal via nocash messages or you know how to log to desmume. \u003c/p\u003e\n\n\n\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eTools I use\u003c/h2\u003e\n\n- C++\n- GNU Make \u003c/li\u003e\n- libnds - as included with devkitPro's toolchain https://devkitpro.org/\n- mappy - https://tilemap.co.uk/mappy.php\n- desmume emulator, for testing and debugging\n- R4 card for testing on a real Nintendo DS Hardware\n- gimp, for converting to 256 color (8bit) indexed bmp/png \u003c/li\u003e\n- [The Spelunky source code](http://www.derekyu.com/games/spelunky_1_1_src.zip) (distributed by Derek Yu) for inspiration\n- [Spelunky assets](https://github.com/tyrovc/SpelunkyCommunityUpdateProject), which are taken from the Spelunky Community Update Project (because there's no need for installing Game Maker)\n- CLion for editing\n\n\u003ch2 align=\"center\"\u003e License \u003c/h2\u003e\n\n\u003cp\u003e Full license text can be accessed under this link: \u003c/p\u003e\nhttps://github.com/dbeef/spelunky-ds/blob/master/LICENSE\n\u003cp\u003e\nBriefly, as for my code, I distribute it under GNU General Public License, as for Spelunky game assets, I use them under Spelunky® User License v1.1b, also, libnds and tools for building .nds files are provided by devkitARM;\ndevkitARM is constructed from and contains components licensed under GPL, BSD, zlib, LGPL \u0026 MPL licenses.\nlibnds is zlib licensed.\n\nNintendoDS is a trademark of Nintendo and is used purely for descriptive purposes. This game is not affiliated with Nintendo.\n\u003c/p\u003e\n\n\n\u003ch2 align=\"center\"\u003eContributing\u003c/h2\u003e\nI will accept every help with running this project, feel free to catch one or more of the todo's.\n\n\u003ch2 align=\"center\"\u003eLinks\u003c/h2\u003e\nI found the following materials very helpful:\n\n- [An introduction manual to Nintendo DS programming](https://patater.com/files/projects/manual/manual.html)\n- http://cpp4ds.blogspot.com/\n- [A Youtube video series about the Spelunky level generator](https://www.youtube.com/watch?v=ouh7EZ5Qh9g)\n- [An online demonstration of the Spelunky level generator](http://tinysubversions.com/spelunkyGen/)\n- A blog entry on lirauna.com about [alpha blending](http://www.liranuna.com/nds-blending-demo/)\n- [The libnds documentation](https://libnds.devkitpro.org)\n- [The devkitPro forums](https://devkitpro.org)\n- A blog entry on coranac.com about [Regular tiled backgrounds](https://www.coranac.com/tonc/text/regbg.htm)\n- [memory access calculator](https://mtheall.com/vram.html)\n- a post on stackexchange on [how to configure video modes to both print text and draw bitmaps](https://gamedev.stackexchange.com/questions/61065/using-ndslib-how-to-configure-video-modes-to-both-print-text-and-draw-bitmaps-o)\n","funding_links":[],"categories":["Open-source Homebrew"],"sub_categories":["Games"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbeef%2Fspelunky-ds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbeef%2Fspelunky-ds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbeef%2Fspelunky-ds/lists"}