Series
Animal Crossing
9 games, 2001–2020.
Games
Interactive: timeline (needs JavaScript)
The series by yearMechanics
A marked cell changed from the game before. “Uses” means the game has the mechanic, with no variant recorded yet.
Every claim, by mechanic and game
| Concept | Animal Crossing 2001 |
|---|
| Commodity trading | uses |
| Price fluctuation | - In the USA GameCube release of Animal Crossing (
GAFE01_00, the build ACreTeam/ac-decomp rebuilds), the turnip market keeps one price per weekday, a 7-entry daily_price table indexed Sunday (0) to Saturday (6), with the market type and the date the table was set. The turnip seller (kabuPeddler) charges the Sunday entry per turnip, times 10, 50, or 100 for a bag. The shop buys at Kabu_get_price, the entry for the clock's current weekday, times 10, 50, or 100 for a bag and 0 for a spoiled turnip. The price doesn't change within a day. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), Kabu_decide_price_sunday sets the Sunday price to 100 × (1 + (r − 0.5) × 0.6), with r from fqrand in [0, 1), stored in a 16-bit integer: a whole number of bells from 70 to 130 (computed with f32 rounding). 130 comes only from the generator's top value, 1 − 2⁻²³, where 1.29999995 × 100 rounds to 130.0; that is one 23-bit draw in 2²³. A decompiler's comment gives the range as [70, 129]. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), Kabu_decide_trade_market picks the week's market type from last week's with one fqrand draw: after type A, A 50%, B 30%, C 20%; after type B, A 60%, B 20%, C 20%; after type C, A 60%, B 30%, C 10%. The tables hold the A and B odds and C takes the rest. The decompilers' comments call A a spike trend, B random, and C falling. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), a type B week (Kabu_decide_price_schedule_typeB) walks from the Sunday price through Monday to Saturday. Each day an fqrand draw below the drop chance (10% at first) multiplies the price by 0.7, caps it at 0.8 × the Sunday price (the code's min_price, which works as a ceiling here), and multiplies the drop chance by 0.3, capped at 10%. Any other day multiplies the price by a factor that starts at 1.05 and grows by 0.01 after each rise, and adds 0.14 to the drop chance. Each day's price is stored as a whole number; the walk keeps the fraction. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), a type A week (Kabu_decide_price_schedule_typeA) first builds a type B week, then sets one day, Monday to Friday with equal odds (fqrand × 5, truncated, plus Monday), to 8 × the Sunday price: 560 to 1,040 bells (computed; 1,040 only from a 130-bell Sunday, see turnip-sunday-price). Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), a type C week (Kabu_decide_price_schedule_typeC) multiplies the price each day from Monday to Saturday by 0.8 + 0.14999998 × r, with r from fqrand in [0, 1), so each day is 80% to 95% of the day before; a decompiler's comment says the constant stands for 0.15. Code
|
| Time of day | uses |
| Time-travel penalty | - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), Kabu_manager runs at the start of play and whenever the clock's day of the month changes during play. On the date the week's table was set (a Sunday), it picks a new market type and new Monday-to-Saturday prices and keeps the Sunday price. On any other date it redraws the whole week, Sunday price included, only if the clock is at or past that Sunday 00:00 plus 7 days, or earlier than that Sunday minus 7 days; the new table is dated the Sunday at or before the clock's date. So a clock moved to any date from the Sunday 7 days before the table's Sunday through the Saturday after it keeps the whole table, except the table's Sunday itself, which keeps only the Sunday price. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), the town's daily update (mAGrw_RenewalFgItem_ovl) runs when the outdoor town scene is built and no event notice is showing, and compares the clock with the time of the last update. If the clock is earlier than that time, it runs a back-in-time pass (mAGrw_GROW_FIRST_FORCE; the decompilers' comment says "Used when you go back in time"). Otherwise it runs the daily pass only once the clock reaches the first 6:00 after the last update: 6:00 the same day if that update came before 6:00, or the next day's. Either pass then records the clock as the last update. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), the daily pass of the town update turns turnips into spoiled turnips once the clock is at or past the first Sunday 6:00 at or after the pass's own 6:00 start; so a turnip bought after an update made on a Sunday at or after 6:00 spoils at the first update from 6:00 the next Sunday (computed). It spoils turnips on the ground in town and on the island's ground, in every player's pockets (and a visitor's), on every floor of every house, and in each house's gyroid storage (haniwa). The same pass first clears spoiled turnips lying on the ground in town and on the island. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), when the town update finds the clock earlier than its last update (the back-in-time pass), mAGrw_ZuruSpoilKabu spoils the turnips on the ground in town and on the island's ground, in pockets, in houses, and in gyroid storage if a save exists and the clock's date is earlier than the date stored with the save. That pass adds no weeds. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), when play starts with the clock earlier than the time stored with the save, the player-select code sets two save flags, cheated_flag and npc_force_go_home (a decompiler's comment: the player "cheated"). While cheated_flag is set, mail_event_check sends no birthday or Christmas cards and schedules no Valentine's Day mail; it then calls mGH_animal_return_init if npc_force_go_home is set, and clears both flags. Code - In the USA GameCube release (
GAFE01_00, ACreTeam/ac-decomp), the daily pass of the town update adds up to 5 weeds for each 6:00 passed since the last update (computed from mAGrw_GetGrassMax), with no cap on the days counted. Each weed goes on a random empty square, in a random town block that has one, that is plantable ground (mCoBG_PLANT4) and not marked off by the cancel map; weeds stop when no such square is left. The weed kinds cycle through a shuffled table of 12. While clear_grass is set (a decompilers' comment: "set by Wisp, removes all weeds"), the next update removes every weed, adds none, and clears the flag; the back-in-time pass adds none either. Code
|