Giter VIP home page Giter VIP logo

complete-fire-red-upgrade's Introduction

Complete Fire Red Upgrade

What is this?

A complete upgrade for FireRed, including an upgraded Battle Engine. By using this or any assets from this repository, you consent to never making money off your game (unless you have my explicit permission). That includes both pay-walls as well as optional donations (which includes ko-fi, Patreon, etc.). If you have a problem with this, feel free to send me a Discord message (Skeli#3917) and I will give you my PayPal so you can pay me $100000 for the hundreds if not thousands of hours I poured into this for free (I don't actually want your money - I'm trying to make a point). Not to mention it's illegal to profit off of an IP you don't own.

Before doing anything it is HIGHLY recommended the documentation be read thoroughly.

Features

  • Expanded PC Boxes (up to 25!)
  • Battle Engine Upgraded to Gen 8
    • All Moves, Abilities, Items, Item Effects through Gen 8
    • A complete set of move animations
    • Vastly improved AI system with decision-making skills for all new battle effects
    • Z Moves
    • Mega Evolution / Primal Reversion / Ultra Burst
    • Ability pop-ups
    • Hidden Abilities
    • Dissapearing HP-bars during Attack Animations
    • Trainer Sliding / In-battle messages
    • Expanded Poké Balls
    • Battle Terrain
    • Totem Pokémon
    • Trainers with EVs
    • Class-based Music
    • Class-based Poké Balls
    • Dynamic Trainer Backsprites
    • Pre-battle mugshots
    • Wild double battles
    • Multi Battles (with a partner)
    • New Evolution Methods
    • Expanded Learnsets
    • Badge-based obedience
    • Shiny Charm + Oval Charm
    • Level Scaling
    • Updated Exp. Share
    • Inverse Battles, Sky Battles
    • Overworld trainer facing
    • Move types light up on move menu based on effectiveness
  • Battle Frontier/Facilities
  • Expanded Move Reminder (up to 50 moves)
  • Improved Tm/Hm Expansion, Reusable TMs
  • Updated Pickup mechanics
  • Swarms
  • Day/Night/Seasons
  • Roaming Pokémon
  • JPANs engine features ported and redesigned/improved in many ways
    • Character Customization
    • Lots of new scripting specials
    • Whiteout hack / text updates
    • And more!
  • Save-block expansion
  • DexNav and secondary PokéTools Start Menu
  • Dynamic overworld palettes
  • Updated Daycare system
  • Expanded Text Names (Abilities, etc)
  • Select Pokemon from PC directly
  • Scrolling summary screen
  • Base stats on pokedex summary screen
  • Updated repel system
  • Configurable Start Menu
  • Follow Me
  • Expanded Pokemon in the Hall of Fame
  • Triple Layer Blocks
  • Expanded Text Buffers
  • Footstep noise in grass & on sand
  • Omnidirectional Jumping
  • Item Image on obtain
  • Move Items on Party Screen
  • New Field Moves like Rock Climb & Defog
  • Expanded Coins, Safari Balls/Steps
  • Fairy Type
  • Oval Charm
  • And More!

NOTE Personalized options are available in src/config.h. The options can be customized by commenting and uncommenting lines.

Note Pokemon Expansion can be found here

Installation Instructions

Windows

See the wiki.

UNIX-like OS (Linux, MacOS, ...)

  1. Install devkitPro with instructions here.

  2. Export ${DEVKITARM}/bin/ to your PATH variable.

  3. Make sure you've installed python 3.6+ and it can be called directly via either python or python3.

  4. Clone the repo and go inside:

git clone https://github.com/Skeli789/Complete-Fire-Red-Upgrade
cd Complete-Fire-Red-Upgrade
  1. Get your ROM into the current directory and rename it to BPRE0.gba.

  2. Configure the offset you want to insert the code: In scripts/make.py change OFFSET_TO_PUT=YYY to the location you want to insert the data.

  3. Run python scripts/make.py (or python3 scripts/make.py if you’ve installed multiple python versions).

A new gba file will appear named as test.gba and an offsets.ini file. Those are your resultant files.

Notes

Anytime you make changes, the compiler will only compile the files you have changed.

Specific to Windows

Any changes made to header files will require you to type python scripts//clean.py build in cmd and then rerun the build scripts. For more command line options, see "Engine Scripts" in the documentation.

Specific to UNIX-like OS (linux, macOS, ...):

Any changes made to header files will require you to clean everything in build/ and then rerun the build scripts.

complete-fire-red-upgrade's People

Contributors

cincidial avatar deadaccountld avatar ghoulslash avatar jiangzhengwenjz avatar luckytyphlosion avatar mrgriffin avatar skeli789 avatar thalescd avatar woodu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

complete-fire-red-upgrade's Issues

Error Compìling

Assembling ./assembly\main.s
Error! The assembler could not be located.
Are you sure you set up your path to devkitPro/devkitARM/bin correctly?
Inserting code.
Error: The insertion process could not be completed.
The linker symbol file was not found.
PS C:\cda>

It doesn't build right now

I'm using the default configuration (no changes of any kind on my behalf basically), everything is set up correctly with Python 3.7.8 installed and its path added to my PATH Environment Variable. I was able to build it normally like 2 days ago at someone's request, in fact, but right now, it's giving me this error:
cmd-2020-07-24_16-17-52

Error: character_customization.c

New Issue:

Compiling ./src\character_customization.c
In file included from ./src\defines.h:5,
from ./src\character_customization.c:1:
./src\character_customization.c: In function 'GetEventObjectGraphicsInfo':
./src../include/global.h:33:43: warning: division 'sizeof (struct MapObjectGraphicsInfo ***) / sizeof (struct MapObjectGraphicsInfo **)' does not compute the number of array elements [-Wsizeof-pointer-div]
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
^
./src\character_customization.c:143:17: note: in expansion of macro 'ARRAY_COUNT'
if (tableId >= ARRAY_COUNT(gOverworldTableSwitcher)

strange sound

so i did all the compiling but now when opening credits open the game makes a horrible screeching

To ask where to put the offsets.ini file

I did all the steps above, along with using the Dynamic Expansion. I got a test.gba file which was 30 mb or so and an offsets.ini file. I checked all the folders in 3GT and in PGE too, but I can't find where to replace the offsets.ini file.
Please tell me where to place it.
(I tried renaming it into roms.ini and replacing it in PGE, but it shows an error)

Adding More Pokemon boxes (32 Total)

i know this isn't much of an issue. more of a question.
how would i go about adding 8 more pc boxes (total 32 instead of 24).
is it as simple as going to "Complete-Fire-Red-Upgrade/src/pokemon_storage_system.c"

and adding

#define BOX_25_RAM (BOX_24_RAM + 30)
#define BOX_26_RAM (BOX_25_RAM + 30)
(and obviously adding the other boxes in the other structs)
and so on
and then compile?

or are there other files i have to edit

EDIT: ok so i did all of that and compiled it. I have 32 boxes now. but the ones i added cant save pokemon, doesnt have a box name, and are full of bad eggs and ?pkmn.

Very slow walking speed

Applying the CFRU has caused the walking speed to slow to a crawl, the DPE is fine though. I'm using the latest commit.

ONLY_CHECK_ITEM_FOR_HM_USAGE doesn't compile

Uncommenting the define for ONLY_CHECK_ITEM_FOR_HM_USAGE will make the build fail:

./src\overworld.c: In function 'TryUseFlashInDarkCave':
./src\overworld.c:1475:100: error: 'ITEM_TM70_FLASH' undeclared (first use in this function); did you mean 'ITEM_TM_CASE'?
 1475 |   if ((Var8004 = ((u32*) gFieldEffectArguments)[0] = PartyHasMonWithFieldMovePotential(MOVE_FLASH, ITEM_TM70_FLASH, 0)) < PARTY_SIZE)
      |                                                                                                    ^~~~~~~~~~~~~~~
      |                                                                                                    ITEM_TM_CASE
./src\overworld.c:1475:100: note: each undeclared identifier is reported only once for each function it appears in
./src\overworld.c: In function 'GetInteractedWaterScript':
./src\overworld.c:2125:11: error: 'ITEM_HM03_SURF' undeclared (first use in this function); did you mean 'ITEM_HM03'?
 2125 |    item = ITEM_HM03_SURF;
      |           ^~~~~~~~~~~~~~
      |           ITEM_HM03
./src\overworld.c:2146:12: error: 'ITEM_HM07_WATERFALL' undeclared (first use in this function)
 2146 |     item = ITEM_HM07_WATERFALL;
      |            ^~~~~~~~~~~~~~~~~~~
./src\overworld.c:2169:11: error: 'ITEM_HM08_ROCK_CLIMB' undeclared (first use in this function)
 2169 |    item = ITEM_HM08_ROCK_CLIMB;
      |           ^~~~~~~~~~~~~~~~~~~~
./src\overworld.c: In function 'TrySetupDiveDownScript':
./src\overworld.c:2197:10: error: 'ITEM_HM05_DIVE' undeclared (first use in this function); did you mean 'ITEM_TYPE_DRIVE'?
 2197 |   item = ITEM_HM05_DIVE;
      |          ^~~~~~~~~~~~~~
      |          ITEM_TYPE_DRIVE
./src\overworld.c: In function 'TrySetupDiveEmergeScript':
./src\overworld.c:2224:10: error: 'ITEM_HM05_DIVE' undeclared (first use in this function); did you mean 'ITEM_TYPE_DRIVE'?
 2224 |   item = ITEM_HM05_DIVE;
      |          ^~~~~~~~~~~~~~
      |          ITEM_TYPE_DRIVE

When adding the tmshms.h header to overworld.c, it continues to fail with:

./src\overworld.c: In function 'TryUseFlashInDarkCave':
./src\overworld.c:1478:100: error: 'ITEM_TM70_FLASH' undeclared (first use in this function); did you mean 'ITEM_HM05_FLASH'?
 1478 |   if ((Var8004 = ((u32*) gFieldEffectArguments)[0] = PartyHasMonWithFieldMovePotential(MOVE_FLASH, ITEM_TM70_FLASH, 0)) < PARTY_SIZE)
      |                                                                                                    ^~~~~~~~~~~~~~~
      |                                                                                                    ITEM_HM05_FLASH
./src\overworld.c:1478:100: note: each undeclared identifier is reported only once for each function it appears in
./src\overworld.c: In function 'GetInteractedWaterScript':
./src\overworld.c:2172:11: error: 'ITEM_HM08_ROCK_CLIMB' undeclared (first use in this function); did you mean 'ITEM_TM39_ROCK_TOMB'?
 2172 |    item = ITEM_HM08_ROCK_CLIMB;
      |           ^~~~~~~~~~~~~~~~~~~~
      |           ITEM_TM39_ROCK_TOMB
./src\overworld.c: In function 'TrySetupDiveDownScript':
./src\overworld.c:2200:10: error: 'ITEM_HM05_DIVE' undeclared (first use in this function); did you mean 'ITEM_HM08_DIVE'?
 2200 |   item = ITEM_HM05_DIVE;
      |          ^~~~~~~~~~~~~~
      |          ITEM_HM08_DIVE
./src\overworld.c: In function 'TrySetupDiveEmergeScript':
./src\overworld.c:2227:10: error: 'ITEM_HM05_DIVE' undeclared (first use in this function); did you mean 'ITEM_HM08_DIVE'?
 2227 |   item = ITEM_HM05_DIVE;
      |          ^~~~~~~~~~~~~~
      |          ITEM_HM08_DIVE

Then I noticed that HM list defined here:

ITEM_HM01_CUT,
ITEM_HM02_FLY,
ITEM_HM03_SURF,
ITEM_HM04_STRENGTH,
ITEM_HM05_DIVE,
ITEM_HM06_ROCK_SMASH,
ITEM_HM07_WATERFALL,
ITEM_HM08_ROCK_CLIMB,

and here:

#define ITEM_HM01_CUT 339
#define ITEM_HM02_FLY 340
#define ITEM_HM03_SURF 341
#define ITEM_HM04_STRENGTH 342
#define ITEM_HM05_FLASH 343
#define ITEM_HM06_ROCK_SMASH 344
#define ITEM_HM07_WATERFALL 345
#define ITEM_HM08_DIVE 346

differ. I'm not sure which one should be the "true" one or if these should be the same at all.

Ability Names Swapped with Others

So... this is the thing, i used CFRU and DPE correctly (i guess...)

and some abilities names like overgrow is swapped with sniper... kinda... weird, i dont know why this happens, its just weird
i know its CFRU and NOT DPE or the Rombase, because i tested first with the rombase and DPE and the names are correct, but after using CFRU the names suddenly Swap

Weird error

When trying to compile this, I get this error:

DevKit does not exist in your Path variable.
Checking default location.
Devkit found.
std lib error:
ERROR: chunk goes beyond end of file

Inserting code.
C://devkitPro//devkitARM//bin\arm-none-eabi-objdump: 'build/linked.o': No such file
Error: The insertion process could not be completed.
The linker symbol file was not found.

Readme is incomplete

Using this tool is quite a bit more involved than using a patch. It would make sense to include a summary of what a user of this tool gains, so that the user can decide if it's worth the effort. Consider including:

  • screenshots of features in use
  • main differences added in the battle engine, like the ability to have inverse battles
  • any added data like abilities / moves
  • added features like mega evolution

Ditto and Aqua Ring

I'm not sure if its a pokemon unbound thing (which uses CFRU) or not, but I noticed that with moves like aqua ring, if you swapped out of ditto after using it, it permanently gets rid of imposter, and is no longer affected by quickpowder. I'm not sure of any other moves that do it, but I noticed it with aqua ring. Highly likely its a CFRU thing though.

DexNav Pokemon IVs not matching potential shown

u8 iv[3];
for (i = 0; i < NELEMS(iv); ++i)
iv[i] = Random() % 6;
if ((iv[0] != iv[1]) && (iv[0] != iv[2]) && (iv[1] != iv[2]))
{
u8 perfectIv = 0x1F;
if (potential > 2)
SetMonData(mon, MON_DATA_HP_IV + iv[2], &perfectIv);
else if (potential > 1)
SetMonData(mon, MON_DATA_HP_IV + iv[1], &perfectIv);
else if (potential)
SetMonData(mon, MON_DATA_HP_IV + iv[0], &perfectIv);
}

In this section of code there are 2 problems:

  1. If any of the iv[0-2] values match each other than the whole guaranteed IV setting to perfect is skipped
  2. If we have all 3 iv values unique and make it into that if, only 1 IV will be set to perfect (as we won't fall into the else ifs)

Proposed fix:

  1. Loop on the generated iv[0-2] values until they are unique from each other
  2. Use 3 separate if statements instead of the if/else if structure. The condition in each of the ifs and their order is the same

The bug in it's current state makes it so that the Pokemon to be caught via the DexNav does not match what the UI shows. For instance, if the UI shows a 3-star potential, we can in reality on get 1 guaranteed perfect IV, and that itself has a chance to fail if the IVs selected are not unique

Edit: For a quicker read on the changes, here's the code post change

u8 iv[3];
for (i = 0; i < NELEMS(iv); ++i) 
	iv[i] = Random() % 6;

while (iv[1] == iv[0]) 
	iv[1] = Random() % 6;

while (iv[2] == iv[0] || iv[2] == iv[1]) 
	iv[2] = Random() % 6;
	

u8 perfectIv = 0x1F;
if (potential > 2)
	SetMonData(mon, MON_DATA_HP_IV + iv[2], &perfectIv);
if (potential > 1)
	SetMonData(mon, MON_DATA_HP_IV + iv[1], &perfectIv);
if (potential)
	SetMonData(mon, MON_DATA_HP_IV + iv[0], &perfectIv);

make.py

when i click on it a window pops up for a second before disappearing. is that supposed to happen when i try to open that?

Successful build, but ROM crashes after character selection

Hi there. I thought I'd give this upgrade a try. My build seems to go successful, but after the character selection it crashes (after Red shrinks to his regular sprite size, the screen stays black and the audio becomes glitched).

My ROMs have the following SHA-1:

233478dd1405a699b47f23416aafe7e2e10318ae  test.gba
41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc  BPRE0.gba

Does anyone know what might have gone wrong?

Caveat: I did have to change some files in the compile script, because I'm on OSX and a couple of things were Windows specific. (I can contribute these back if you are interested. My changes should be cross-platform but I haven't tested it on Windows.)

However I doubt this is the problem, because the changes are mostly just changing slashes in file paths. I had to compile my own grit (v0.8.15) though, since I can't use the .exe file.

Any thoughts are appreciated 🙂

Use of decomps

Please feel free to remove this if it's the wrong place to discuss a suggestion like this.

Is there any possibility this will move away from being binary-based and use the pret repo as the default method instead? It's been shiftable for a while and has made a lot of progress. The source for this project is already written in C and could be translated over to fit.

There are lots of interesting and useful features here, but the community has moved away from binary hacking (for good reason) and I don't see why the transition wouldn't be worth the effort.

[Suggestion]Box Pokemon Could Be Compressed Further Without Issue

Your compression of the Pokemon struct size by removing fields that are unused in FR works, but you could save even more by doing some more packing. I looked into this back in the day on the pret Discord and was able to squeeze the struct down to 65 bytes without losing any data. You could use some of my optimizations to further reduce the size of the compressed Pokemon struct and thereby increase the number of boxes.

Here is a link to my gist on the topic. It goes into detail on how many bits can be saved from each field and justifies each with a little note. You could probably save another ~10 bytes or so if you adapt some of them.

Error Compiling

When I try to compile I get this error

C:\Users\uranu\Desktop\Complete-Fire-Red-Upgrade-master>python scripts//make.py
Traceback (most recent call last):
File "scripts/build.py", line 286, in
main()
File "scripts/build.py", line 270, in main
linked = link(itertools.chain.from_iterable(objects))
File "scripts/build.py", line 199, in link
cmd = [LD] + LDFLAGS + ['-o', linked] + list(objects)
File "scripts/build.py", line 217, in run_glob
files = glob(os.path.join(SRC, globstr), recursive = True)
TypeError: glob() got an unexpected keyword argument 'recursive'
Inserting code.
Error: The insertion process could not be completed.
The linker symbol file was not found.

Constant crashing/restarting on boot screen

Attempting to run the generated test.gba file on a fresh install on a v1.0 FireRed ROM causes the VisualBoyAdvance emulator to crash and restart on the copyright screen.
Python 3.7.6 64bit is the only version installed, and devkitPro for GBA development is installed along with the path variable set up.
image

Equivalent possibility

This is not a issue but a possible plan:
I am speaking on behalf of myself and LCCoolJ95, is it possible for a equivalent system to match Emerald based Rom Hacks.
Since I had been trying to locate a better system for myself and other players complaining about the maximum capacity limitations in the PC, although I did check your CFRU but just short by only one Pokémon. Is there any possibility of a Emerald Upgrade system? and also how could I help establish this alongside a “veteran” that knows the ropes, I would like to learn to diversify my talents!

Trainer sending their pokémon in battle twice

I found this problem earlier, but I thought it was the result of building a new ROM after doing some changes to config.h and resuming the savefile I already had, so I got a clean version of the repository, built with the default settings and went on to check if the problem still happened. It does.

Context: 2nd Rival Battle in Route 22. I had my Charmander kill Green's Pidgey, and when he sent out his Squirtle, I switched to a low leveled Mankey that was quickly killed by Squirtle in 2 turns with a Tail Whip + Tackle combo.
When I sent out my Charmander afterward, the Player did the action twice for some reason.
https://streamable.com/2p70l

also a Flag

Hello there, new around here, so when doing the python scripts//make.py when it reached the overworld.c I got an error saying FLAG TANOBY KEY undeclared and if I meant 'MAPSEC_TANOBY_KEY,

what shall I do?

Thx for your time!

Compiling Error

Trying to compile (opened the cmd from the folder where the BPRE0 is located, but I get an error.
screenshot

-I Installed python 3.8.1 and devkitpro
-I have the following pathways
C:\Users\James\AppData\Local\Programs\Python\Python38;C:\devkitPro\devkitARM\bin
C:\Users\James\AppData\Local\Programs\Python\Python38\Scripts;C:\devkitPro\devkitARM\bin
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;C:\devkitPro\devkitARM\bin
C:\Users\James\AppData\Local\Programs\Python\Python38
C:\Users\James\AppData\Local\Programs\Python\Python38\Scripts\

  • If I only have the first 3 paths, then cmd says it doesn't recognize python.
    I used the right links C:\Users\James\AppData\Local\Programs\Python\Python38\ and C:\devkitPro\devkitARM\bin but for some reason it can't detect the devkitpro link.

Compile issue in last version 8/6/2019

If I compile the last version:

Compiling ./src\build_pokemon.c
./src\build_pokemon.c: In function 'PostProcessTeam':
./src\build_pokemon.c:1782:12: warning: unused variable 'k' [-Wunused-variable]
u32 i, j, k;

Glitched attack names

Attacks from the Gen4+ present this bug even in a clean rom
Also the rest of the attacks are not decapitalized.
test
The glitched attacks works fine
There are some way to fix it or a workaround?

Strange visual issue

So, I built the repository with its default settings a while ago, and I noticed this minor visual issue.
There's lines of tiles appearing in the border tiles as you move. I don't know how to put it into words, so I recorded a quick video.
https://streamable.com/wbooj

EDIT: I suggest to watch the video on Fullscreen to better appreciate the issue.

Incompatibility with the BW/B2W2 Music Patch

Currently, the battle system gets broken by having the BW/B2W2 Music Patch (marked as compatible in the documentation) applied to the game. The Engine and the Patch should not have any conflicting bytes. The issues are as follows:

  • Trainer Battles: Game crashes immediately when the battle starts, doesn't even load the Battle BG or anything at all. Crash on a black screen.

  • Wild Battles: Game does not crash, the battle loads. Screen is completely white, only the textbox (without borders) loads in. You can still select Bag, which will show the Bag with glitched graphics, and then back out. Only now the battle BG and the Pokémon sprites are visible. Sometimes (but not regularly) this still crashes at the end of the battle.

battle_strings.c

Compiling ./src\battle_strings.c
./src\battle_strings.c: In function 'BattleStringExpandPlaceholders':
./src\battle_strings.c:640:9: warning: unused variable 'class' [-Wunused-variable]
u8 class = gTrainers[gTrainerBattleOpponent_A].trainerClass;
^~~~~
./src\battle_strings.c:795:9: warning: unused variable 'class' [-Wunused-variable]
u8 class = gTrainers[VarGet(VAR_SECOND_OPPONENT)].trainerClass;

2 new compile errors

Error number 1:

Compiling ./src\character_customization.c
In file included from ./src\defines.h:9,
from ./src\character_customization.c:1:
./src\character_customization.c: In function 'GetEventObjectGraphicsId':
./src../include/global.h:33:43: warning: division 'sizeof (struct MapObjectGraphicsInfo ***) / sizeof (struct MapObjectGraphicsInfo **)' does not compute the number of array elements [-Wsizeof-pointer-div]
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
^
./src\character_customization.c:272:19: note: in expansion of macro 'ARRAY_COUNT'
if (upperByte >= ARRAY_COUNT(gOverworldTableSwitcher))

Error number 2:

Compiling ./src\overworld.c
./src\overworld.c: In function 'IsRunningDisallowed':
./src\overworld.c:1190:2: error: expected expression before '||' token
|| GetCurrentMapType() == MAP_TYPE_INDOOR

Rom doesn't contain offsets

I'm sorry if this is just me but I can't wrap my head around this. I'm currently setting up the engine and created the two roms, as said in the documentation (One with the dynamic Pokémon expansion, one with the Complete Upgrade). Now the documentation says to take the offsets of certain values mentioned in the documentation, and copy them from rom 2 to rom 1. However, the Hex Editor says that these offsets don't exist. For context, I need to copy what's between offset 089B2AA8-089B503C, but these offsets seem to not exist. What confuses me even more is that in the documentation, the offsets mentioned in the offset.ini file are 08992530-0899479E while the next screenshot shows the bytes copied from 992530-99479D. Is there any conversion I am missing? If so, it's not mentioned in the documentation as far as I can tell.

I'm really sorry if this isn't an issue, this is my first time trying this and I don't understand a lot of what the documentation is actually trying to say...

Freeze during battle

After compiling, during the very first battle (against the rival), the game freezes when I choose a move, no matter which one, freezes with all the attacks

Special 0xB1 – Choose Item From Bag

I set the script this way:

fadescreen 0x1
setvar 0x8000 0x1 @key item pocket
special 0xb1
waitmsg @i also tried to set the command waitstate
compare 0x800e 0xD
if 0x1 goto @ok

however any item I select is taken as right and sends me back to the "ok" part.
This problem did not occur with Shiny Quagsire's routine, even though the script was structured a bit differently. Am I wrong to write the script?

[Make.py] CFRU

image

Trying to compile the CFRU files with "python scripts // make.py" shows this error.

The assembler could not be located.

Trying to run the python make.py stuff to finish this up and I can't figure out what's wrong from just sifting through files and the paths. Looking at the other closed issues with the same error didn't help either. This is the main error.

image

I have the devkitPro in the PATH variable as well as the 3 variables in the order listed in 1 of the solutions. I've tried the same process with cmd ran as administrator as well and checked to make sure said assembly file was there which it was.

image
image
image
image

I installed Python 3.7.9 and it properly opens when typing "python" into cmd.
DevkitPro version is 3.0.3

Before you ask, I have tried all of this in my storage drive (E:) as well as my main drive (C:), and yes I did change the paths accordingly.

//Edit
Forgot to include the related issue link.
#12

Rivalry damage boost is insanely high

I was testing some features and realized a Nidorino with Rivalry as ability was literally KOing anything that breaths with a single Poison Sting. The issue seems to be related to the damage calculation for the ability. Somebody form the discord server helped me to fix it so I opened the issue just in case you cannot read my bug report from the server

Multi/indoor battle backgrounds crashes the game

If the #define VAR_BATTLE_BG line is uncommented an a battle BG is loaded via setvar that belongs to the list of multi backgrounds (0xA to 0x13) the game crashes upon starting any battle. Tested with a clean ROM and my project.

Does make.py even do anything? (please help me)

I've read the full GitHub tutorial thoroughly but I can't move past step 5. Yes I read the FAQ, "python scripts//clean.py" didn't help.
I'm 100% sure I've set it up perfectly. Devkit is proper, the PATH is correct, I selected add to PATH when installing Python 3.7.6, and I ran cmd from the master folder. I've replicated videos of it down to the mouse movements but theirs works and mine doesn't. I know this command does something and I'm probably just stupid. But no matter what, when I try to compile it with "make.py" it fails. No error message either, I type in "python scripts//make.py" and it just moves on and ignores me. It's driving me nuts and I haven't even got to install DPE yet, hopefully it's less of a nightmare. I've checked dozens of solutions and restarted many times. I provided images from my computer to provide insight. I have a feeling the script is making it all the way to build code but can't progress nor will it tell me why. At first it would instantly respond with a blank, but now there's a split second delay before the blank. Maybe it means something maybe it doesn't. I'm clearly not good enough at this to figure it out on my own...
Not it
PATH
Qfiles
R just in case

The issue is fixed! If you uninstall python or try to redo the whole process of the tutorial MAKE SURE IT IS DELETED WITHOUT A TRACE. This done manuelly via program files or with the IObit app.

EV Items

EV items crash the game. PP Up and PP Max works fine. Rare Candy also works.

Error when running make.py

Just trying to run the make.py script to put together the rom gives me this error:

./build\01c3c0e0da5d618fdac476b903395938.o: in function CheckForTrainersWantingBattle': overworld.c:(.text+0x2c0): undefined reference to TrainerCanApproachPlayer'

Any help is appreciated :)

Follow me not inserted

The follow me function is not included in the rom. If I check the hooks I can't find the routines. In fact setting the setvar in the script 0x5005 0x2 the character with id 2 does not follow me. Am I wrong maybe something?

flags?

hi my first time trying to do this kind of stuff to fire red and i keep running into issues during the CMD step. everytime i do the python scripts//make.py i see something pop up mentioning some flag isnt defined

Compile Issues

Hello...it's me...again XD

Building Strings ./strings\z_move_names.string
./build\b645a4a6eff30f54119110fcf81624c8.o: In function EventScript_WaterDyedBlue': (.text+0x436): undefined reference to gText_WaterDyed'

Cannot use advancemap even if expanded

Hi
not too sure if this is supposed to happen, but when I use an extended Advancemap version I can't use the wild pokemon section because it shows me badly written moves instead of the expanded list
Maybe I did something worng when I was creating the rom?

also, since I'm already here, how should I use the .ini with G3Hs? Can't I use PGE instead?
Thanks in advance

Annotation 2019-09-24 202019

Fluctuating and Erratic curves don't work past L100.

From a mechanical standpoint

Fluctuating

Fluctuating requires way too much experience compared to the rest of the curves. For example, at level 200, Fluctuating has a total of 21120000 experience points, while the next largest curve (Slow), only has a total of 10000000 experience points, which is less than half of Fluctuating's required experience.

Erratic

You have realized that total experience would become negative if the level cap is greater than 160, so you chose to use the formula: (level^3 * (maxLevel + 60 - level))/100. This has two major issues.

The first is there will be a sudden discontinuity between the total experience of level 100 and total experience of level 101, since levels 98-100 would still use the computed lookup tables.

The second and more important issue is that this does not account for marginal experience (experience to the next level). For a max level of 180 and beyond, the maximum experience would actually start to decrease beyond a certain level, which means that a Pokémon would require negative experience to level up.

Even for a max level below 180, Erratic would require pitifully low amounts of experience to level up. Beyond an early point between L100 and the max level (dependent on when f'(x) = 0), the formula will start to require decreasing amounts of experience. While this behaviour is somewhat similar to Erratic's experience requirements to the next level, it produces extreme behaviour compared to other curves. With a max level of 150, Erratic would only need 7152 experience points to level up to level 150, while a formula like Fast requires 42841 experience points, which is almost 6 times more!

At levels closer to 180, you would have extremely low experience requirements. With a max level of 175, Erratic would require less than 1/27th of the experience that Fast would require to level from 174 to 175 (2131 vs. 58381). Of course, you could try to plan around this by setting the max level to something far higher than what the expected level would be at whatever final postgame boss there is, but at that point you may as well re-evaluate the entire experience curve.

From a design standpoint

Looks are deceiving, but the total experience of Fluctuating and Erratic do not tell us the full story of their purpose.

The design behind the Fluctuating curve is that the early levels require low amounts of experience to level up, while the later levels require much more experience to level up. The inverse is the same for Erratic; the early levels require high amounts of experience to level up, while the later levels require much less experience. Actual numbers aren't really important here, you can look at Bulbapedia for that, but the point is to understand the idea.

With this knowledge, the correct way to create the Fluctuating and Erratic curves would be to stretch its behaviour across the entire level curve (rather than just extrapolating its behaviour from the last defined function) although I haven't tried attempting this myself, and it would likely require a bit of testing in-game to see how it works out.

One final thing: I haven't checked, but I also wouldn't be surprised if there was any overflow calculating experience for levels past 100.

Successful compile, but game is a blank screen

Hello there. I followed the instructions in here, generated the test.gba file, load it on mGBA but all I'm seeing is a blank screen. I got no errors in the process. What could I be missing? Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.