1. Let's Make: Dangerous Dave
- Posted by ghaberek (admin) Jul 05, 2019
- 1260 views
Somebody port this to Euphoria!
https://www.maizure.org/projects/lets-make-dangerous-dave/index.html
-Greg
2. Re: Let's Make: Dangerous Dave
- Posted by petelomax Jul 05, 2019
- 1220 views
Won't that be a bit difficult without access to the original binary?
3. Re: Let's Make: Dangerous Dave
- Posted by Icy_Viking Jul 05, 2019
- 1240 views
Won't that be a bit difficult without access to the original binary?
It would be possible to make it with original graphics similar to Dangerous Dave. There are also lots of sites like Spriters Resource that can also be used. Or DosBox and emulation. This does interest me, though I don't have any nostalgia for Dangerous Dave. Though looking at the C code, it looks like it would be fairly easy to port to Euphoria using EuSDL or Euraylib. Probably EuSDL though, since the open source example uses SDL. Though any graphics library could possibly work.
4. Re: Let's Make: Dangerous Dave
- Posted by ghaberek (admin) Jul 06, 2019
- 1220 views
Won't that be a bit difficult without access to the original binary?
You can buy the complete Dangerous Dave Pack from GOG.com. The version used in the article is named Dangerous Dave in the Deserted Pirate's Hideout in that pack.
There's also a freeware version available here: Dangerous Dave. Looks like that was the original version released as part of Gamer's Edge in 1990.
-Greg
5. Re: Let's Make: Dangerous Dave
- Posted by Icy_Viking Jul 06, 2019
- 1194 views
Well I attempted a rough skeleton. Might need to refresh my more advanced Euphoria skills a bit. Writing wrappers was a relatively easy affair. Hopefully this serves as a start, regardless.
--Attempt at converting level.c to Euphoria code include std/get.e include std/filesys.e include std/io.e include std/machine.e public constant PATH = 256, TILES = 1000, PADDING = 24 public constant LEVEL_ADDRESS = 159242 --0x26e0a in decimal format atom dave_level = allocate(10) atom file file = open("DAVE.exe","rb") while file = 1 do seek(file,LEVEL_ADDRESS) end while atom file_out atom file_num = 4,fname = 12 --got stuck here for j = 0 to 10 do fname = 0 printf(1,"%u",file_num[j]) end for
--Basiclly the .h file converted to Euphoria code in skeleton format enum type MONSTER_STATE TYPE, PATH_INDEX, DEAD_TIMER, MONSTER_X, MONSTER_Y, MONSTER_PX, MONSTER_PY, NEXT_PX, NEXT_PY end type enum type GAME_STATE QUIT, TICK, DAVE_TICK, CURRENT_LEVEL, LIVES, SCORE, VIEW_X, VIEW_Y, DAVE_X, DAVE_Y, DAVE_DEAD_TIMER, DBULLET_PX, DBULLET_PY, DBULLET_DIR, EBULLET_PX, EBULLET_PY, EBULLET_DIR, DAVE_PX, DAVE_PY, ON_GROUND, SCROLL_X, LAST_DIR, DAVE_RIGHT, DAVE_LEFT, DAVE_JUMP, DAVE_FIRE, DAVE_DOWN, DAVE_CLIMB, DAVE_JETPACK, JETPKAC_DELAY, JUMP_TIMER, TRY_RIGHT, TRY_LEFT, TRY_JUMP, TRY_FIRE, TRY_JETPACK, TRY_DOWN, TRY_UP, CHECK_PICKUP_X, CHECK_PICKUP_Y, CHECK_DOOR, CAN_CLIMB, COLLISION_POINT, TROPHY, GUN, JETPACK end type public procedure Init_Game() end procedure public procedure Init_Assets() end procedure public procedure Check_Input() end procedure public procedure Update_Game() end procedure public procedure Render() end procedure public procedure Check_Collision() end procedure public procedure Clear_Input() end procedure public procedure Pickup_Item() end procedure public procedure Start_Level() end procedure public procedure Update_dbullet() end procedure public procedure Update_ebullet() end procedure public procedure Verify_Input() end procedure public procedure Move_Dave() end procedure public procedure Move_Monsters() end procedure public procedure Fire_Monsters() end procedure public procedure Scroll_Screen() end procedure public procedure Apply_Gravity() end procedure public procedure Update_Level() end procedure public procedure Restart_Level() end procedure public procedure Update_Frame() end procedure public procedure Draw_World() end procedure public procedure Draw_Dave() end procedure public procedure Draw_Dave_Bullet() end procedure public procedure Draw_Monster_Bullet() end procedure public procedure Draw_Monsters() end procedure public procedure Draw_UI() end procedure public procedure Is_Clear() end procedure public procedure Is_Visible() end procedure public procedure Add_Score() end procedure