Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

German Build #285

Closed
wants to merge 11 commits into from
Closed

German Build #285

wants to merge 11 commits into from

Conversation

Dermahn
Copy link

@Dermahn Dermahn commented Aug 16, 2020

Based on VC roms.

Code banks are a bit ugly. I tried to keep it readable but suggestions for improvement are welcome.
Text files should probably all be stored in "text/" like they used to be, rather than having them divided between "text/" and various folders inside "data/".

- Partially decompiled code bank differences
- Partially translated code bank text
- Fully translated Text bank 1
- Fully translated Text bank 2
- Fully translated Text bank 3
- Fully Translated Text bank 4
@Rangi42
Copy link
Member

Rangi42 commented Aug 17, 2020

Instead of separate en and de subdirectories, this could use a single top-level version/ directory, with subdirectories for each translation containing alternative files. See https://github.com/mid-kid/pokecrystal/tree/i18n for an example.

This should also update roms.sha1 and the README's "builds the following ROMs" list to indicate exactly what German ROM it's recreating. These are the correct hashes:

Then verify with make compare that it's building correctly.

@Dermahn
Copy link
Author

Dermahn commented Aug 17, 2020

@Rangi42 that is a much better system but it seems to require some heavy restructuring. Is there any work being done on this already? For now, I guess I can keep it as it is but organize the language specific files into a similar folder structure.

@Rangi42
Copy link
Member

Rangi42 commented Aug 17, 2020

@mid-kid started those i18n disassemblies; you may want to collaborate on a good structure for both pokered and pokecrystal.

@mid-kid
Copy link
Member

mid-kid commented Aug 17, 2020

The structural differences in the i18n branch are "big" (see pret/pokecrystal#631) but they can be summed up by the following points:

  • Splitting all of the code into sections that can be freely moved around the ROM without breaking
  • Distinguishing .asm from .inc to automatically discover object files to build and improving incremental builds
  • Rewriting the Makefile to abuse VPATH and rgbasm's -i option to effectively create seamless "overlay" directories

You could port the last point to pokered without much of a struggle, you would just have to manually specify the .o files to build like is being done in the current makefile.

However, this change is exactly the reason it hasn't been merged yet. There's multiple problems I haven't yet completely figured out how to solve:

  • The setup causes the entire repo to be rebuilt for each version of the game, even if only two files change (like with crystal-au). That takes a ton of time in make compare, which is ran often enough by contributors to this repo. This can be partially remedied by having a way to only build the assets once, but that'd require a way to get the makefile to distinguish localized assets from the "default" assets without relying on VPATH, maybe by abusing the vpath directive and an external tool? It's even harder to tell which .o files have to be rebuilt for a localization without specifying them manually, though that'd be less of a problem here since I don't think a "splitting" is going to happen anytime soon
  • .d dependency files aren't rebuilt when any of the included files is updated. This can be fixed by having scan_includes distinguish between INCLUDE and INCBIN in the output, and generating a rule that causes the .d to depend on every INCLUDEd file, I just haven't done this yet.

So yeah, the system is far from perfect and I'm not really comfortable telling people to use it in its current state, but I'm not sure if it can ever "properly" be fixed, but if anything, a version/ directory alongside the occasional if DEF is the best of both worlds for both maintainers and users, I feel, so if we can figure anything out, that'd be amazing.

If you have any suggestions or ideas or just need help implementing this or understanding what I did, feel free to put a message up on the Discord. It'd be great to figure out a method.

@Rangi42
Copy link
Member

Rangi42 commented Aug 18, 2020

Also,https://github.com/einstein95/pokered-de/ exists, for whatever strings or text graphics are still left. (See #271)

@Rangi42
Copy link
Member

Rangi42 commented Aug 18, 2020

Even without splitting everything into freely movable sections, I think the version/ directory would work for alternative files.

So instead of:

  • text/text_en/*.asm and text/text_de/* → text/* and version/german/text/*
  • gfx/tilesets/overworld.png and gfx/tilesets/overworld_de.png → gfx/tilesets/overworld.png and version/german/gfx/tilesets/overworld.png
  • etc

@Dermahn Dermahn marked this pull request as ready for review August 20, 2020 10:20
@Dermahn
Copy link
Author

Dermahn commented Aug 20, 2020

I ended up going with the system that @Rangi42 suggested.
All conflicting files are now stored in "version/pokerot/". I wasn't sure where to put the graphic files. I kept them in the main folder since that's where all the green version graphics are stored but I can move them if that's preferable.


IF DEF(_GERMAN) ; all european builds?
LoadEDTile:
; code from the english build results in a corrupted ED tile
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this comment is accurate. The ED tile is only corrupt on bad emulators that do not correctly mimic MBC behavior. AFAIK, it's never corrupt on real hardware. I am curious why they chose to rewrite this bit though.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't test it on real hardware but I did test it on BGB. The US ROM displays the ED tile just fine but the german ROM has a garbled mess in place of the ED tile. Rewriting the function fixes this.

@Rangi42
Copy link
Member

Rangi42 commented Aug 20, 2020

@Dermahn You could put the gfx in the same version/pokerot/ folder as everything else, keeping the same structure as top-level English pokered. So gfx/title/rote_edition.png would become version/pokerot/red_version.png, gfx/tilesets/overworld_de.png would become version/pokerot/gfx/tilesets/overworld.png, etc. (Also, from those version strings it's "rote" and "blaue", so please make that consistent in all such names, e.g. version/pokerote/.)

@Dermahn
Copy link
Author

Dermahn commented Aug 20, 2020

@Rangi42 I'll move the graphics.
As for the name, as a native speaker I can assure you that "pokerot" is correct. The colours themselves are "rot" and "blau". In the context of "Red Version" you are right, it should be "rote Edition" but in the context of "Pokemon Red", "Pokemon Rot" is correct.

@Rangi42
Copy link
Member

Rangi42 commented Aug 20, 2020

Interesting, thanks! So Rot and Blau are the plain nouns Red and Blue, but can get declined as Rote or Blaue (or apparently Roten and Blauen sometimes too, from https://de.wikipedia.org/wiki/Pok%C3%A9mon_Rote_und_Blaue_Edition). I still can't tell what gender "Edition" is supposed to be. :P

@jendrikw
Copy link

jendrikw commented Sep 2, 2020

For reference, the word "Edition" is feminine. That means that, depending on how it's used in a sentence, the word "rot" can have the forms "rot", "rote", "roter", or "roten". https://en.wiktionary.org/wiki/rot#Declension

@Rangi42 Rangi42 marked this pull request as draft June 6, 2022 21:26
@Rangi42
Copy link
Member

Rangi42 commented Jul 9, 2022

This is now superseded by the more up-to-date https://github.com/einstein95/pokered-de. We may end up having an i18n branch with all translations (as a possible first step before making that be the master branch).

@Rangi42 Rangi42 closed this Jul 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants