openai / retro

Retro Games in Gym
MIT License
3.39k stars 526 forks source link

Importing .gba rom fails. #203

Closed ShinhuPark closed 4 years ago

ShinhuPark commented 4 years ago

Issue summary

Importing gameboy advance roms with type '.gba.' with 'retro.import'

When I downloaded gameboy advance roms-in my case it's kirby nightmare in dreamland(2003) and I went where it's downloaded in cmd, and imported the file in my virtual environment with, "python -m retro.import ." no games are import. 0 games imported. (ai_kirby) C:\Users\bonny\coding projects\ai python\ai_kirby\kirby rom>python -m retro.import . Imported 0 games

I checked if other atari games are imported successfully, and they were. https://github.com/openai/retro/issues/53

I checked if these rom can be played in the emulator that this gym retro library uses (mGBA), and mGBA alone recognized this file successfully.

I also tried nes roms but won't work, regardless of correct types.

Why is this happening?

The link where I download the Gameboy Advance roms : https://archive.org/details/GameboyAdvanceRomCollectionByGhostware

System information

endrift commented 4 years ago

Gym Retro can only import the ROMs for games it knows about, otherwise you'd get an environment with no reward information. As of now, Gym Retro doesn't have any integrations for GBA games. The core was added for future compatibility, but no integrations have been added as of yet. So this is expected behavior (unfortunately).

christopherhesse commented 4 years ago

Thanks @endrift! There is a guide on how to do an integration here: https://retro.readthedocs.io/en/latest/integration.html. Please post an issue if it doesn't work correctly with GBA games, since I'm not sure that has been tested.

ShinhuPark commented 4 years ago

Gym Retro can only import the ROMs for games it knows about, otherwise you'd get an environment with no reward information. As of now, Gym Retro doesn't have any integrations for GBA games. The core was added for future compatibility, but no integrations have been added as of yet. So this is expected behavior (unfortunately).

Thanks for your reply. But i got some more questions then.

What I saw from 'Emulated Systems' in readme file was Atari Atari2600 (via Stella) NEC TurboGrafx-16/PC Engine (via Mednafen/Beetle PCE Fast) Nintendo Game Boy/Game Boy Color (via gambatte) Game Boy Advance (via mGBA) Nintendo Entertainment System (via FCEUmm) Super Nintendo Entertainment System (via Snes9x) Sega GameGear (via Genesis Plus GX) Genesis/Mega Drive (via Genesis Plus GX) Master System (via Genesis Plus GX)

There's gba in list.

Do you mean 'being emulated' doesn't mean it's already integrated? Then how do I know which platforms are integrated? Does this mean i cannot use gym-retro in gba or nes? I am not sure if nes is integrated or not..

And what does 'being emulated' here mean?? If the library cannot even run this rom, this is not even being emulated. There's gotta be something wrong in mpdule itself or something i am missing.

christopherhesse commented 4 years ago

I think you're confused about the terminology used here.

Gym-retro includes support for the emulated systems in the readme. That means that, provided the game has been "integrated", that import script will recognize the ROM and import it.

Of all the games available for those systems, only about 1000 have integrations. An integration is a collection of files like these for SonicAndKnuckles-Genesis: https://github.com/openai/retro/tree/master/retro/data/stable/SonicAndKnuckles-Genesis or SmashTV-Nes: https://github.com/openai/retro/tree/master/retro/data/stable/SmashTV-Nes (which is an NES game)

If you want to integrate a new game, you have to create those files by following the guide I linked. If you want to add support for a new system, it's much more difficult. In your case it seems only that you need to integrate a new game.

christopherhesse commented 4 years ago

As endrift was saying, 0 of the 1000 existing game integrations are GBA games, but the system itself is still supported by gym-retro.

For playstation, you can't even create an integration because the system is not supported.

ShinhuPark commented 4 years ago

As endrift was saying, 0 of the 1000 existing game integrations are GBA games, but the system itself is still supported by gym-retro.

For playstation, you can't even create an integration because the system is not supported.

I understood.. So for gba, If I make the integration, it will read the rom file. Still there's possibility there, even though i have a couple more of processes i have to step on.

Inside "₩retro" there are lots of files named with game titles. What you are saying is that .. These games in this directory are integrated inside retro,and the others aren't.

So that basically means, I follow the guide and makes those files inside '₩stable'. And that will enable me to import gba rom files.

Please could you tell me if I'm getting it wrong?

Thanks for your reply, Chris.

christopherhesse commented 4 years ago

That's basically it, we aren't accepting new game integrations but you can modify your local copy of gym-retro or else follow the guide for storing your integration in your own folder.