# Course Overview: FireRed Creature RPG Architecture

A 24-week advanced course that teaches a complete Pokemon-style RPG as a stack of data tables and state machines, using Pokemon FireRed source files as the primary authority and Pokemon Showdown only as a secondary reference for battle modeling, Dex-style data access, and deterministic battle tests.

## Modules
- Runtime Shell and Source Contracts: weeks 1-2
- Overworld Map Runtime: weeks 3-5
- Input, Events, and Story Progression: weeks 6-8
- Creature and Party Data Model: weeks 9-11
- Battle Engine Architecture: weeks 12-16
- Items, Menus, and Party UI: weeks 17-19
- Persistence, Link, and System Integration: weeks 20-21
- Showdown Comparison and Verification: weeks 22-24

## Source-Grounded Modules
- pokemon-showdown/data: Use pokemon-showdown/data as a recurring course module around pokemon, showdown, learnsets, mods, moves, protect. Anchor lectures in pokemon-showdown/data/FORMES.md, pokemon-showdown/data/abilities.ts, pokemon-showdown/data/aliases.ts and cite exact chunk IDs when making source-backed claims.
- pokefirered/src: Use pokefirered/src as a recurring course module around pokefirered, src, void, battle, pokemon, species. Anchor lectures in pokefirered/src/AgbRfu_LinkManager.c, pokefirered/src/agb_flash.c, pokefirered/src/agb_flash_1m.c and cite exact chunk IDs when making source-backed claims.
- pokemon-showdown/server: Use pokemon-showdown/server as a recurring course module around pokemon, showdown, server, chat, user, room. Anchor lectures in pokemon-showdown/server/README.md, pokemon-showdown/server/artemis/README.md, pokemon-showdown/server/artemis/index.ts and cite exact chunk IDs when making source-backed claims.
- pokemon-showdown/test: Use pokemon-showdown/test as a recurring course module around assert, pokemon, moves, battle, species, showdown. Anchor lectures in pokemon-showdown/test/TESTS.md, pokemon-showdown/test/assert.js, pokemon-showdown/test/common.js and cite exact chunk IDs when making source-backed claims.
- pokefirered/data: Use pokefirered/data as a recurring course module around map, pokefirered, elevation, maps, json, trainer. Anchor lectures in pokefirered/data/layouts/layouts.json, pokefirered/data/maps/BattleColosseum_2P/map.json, pokefirered/data/maps/BattleColosseum_4P/map.json and cite exact chunk IDs when making source-backed claims.
- pokefirered/include: Use pokefirered/include as a recurring course module around pokefirered, define, constants, extern, guard, void. Anchor lectures in pokefirered/include/AgbRfu_LinkManager.h, pokefirered/include/bag.h, pokefirered/include/battle.h and cite exact chunk IDs when making source-backed claims.
- pokemon-showdown/sim: Use pokemon-showdown/sim as a recurring course module around pokemon, showdown, sim, battle, dex, move. Anchor lectures in pokemon-showdown/sim/DEX.md, pokemon-showdown/sim/NONSTANDARD.md, pokemon-showdown/sim/README.md and cite exact chunk IDs when making source-backed claims.
- pokefirered/tools: Use pokefirered/tools as a recurring course module around pokefirered, tools, json, jsonproc, nlohmann, std. Anchor lectures in pokefirered/tools/bin2c/LICENSE, pokefirered/tools/bin2c/Makefile, pokefirered/tools/bin2c/bin2c.c and cite exact chunk IDs when making source-backed claims.

## Assessment Strategy
- homework_w01: due week 1
- homework_w02: due week 2
- quiz_w02: due week 2
- homework_w03: due week 3
- homework_w04: due week 4
- quiz_w04: due week 4
- homework_w05: due week 5
- homework_w06: due week 6
- quiz_w06: due week 6
- homework_w07: due week 7
- homework_w08: due week 8
- quiz_w08: due week 8
- homework_w09: due week 9
- homework_w10: due week 10
- quiz_w10: due week 10
- homework_w11: due week 11
- homework_w12: due week 12
- quiz_w12: due week 12
- homework_w13: due week 13
- homework_w14: due week 14
- quiz_w14: due week 14
- homework_w15: due week 15
- homework_w16: due week 16
- quiz_w16: due week 16
- homework_w17: due week 17
- homework_w18: due week 18
- quiz_w18: due week 18
- homework_w19: due week 19
- homework_w20: due week 20
- quiz_w20: due week 20
- homework_w21: due week 21
- homework_w22: due week 22
- quiz_w22: due week 22
- homework_w23: due week 23
- homework_w24: due week 24
- quiz_w24: due week 24
- midterm: due week 12
- final: due week 24
