# Savegame system, task list, demo and texture scrolling (N2:0x497000..N2:0x499300, SaveGame.cpp,
# CTaskList.cpp).
# address kind type [name]      kinds: ptr (pointer slot), ptrarray, val (value in g_data), array
#
# Real C++ objects, not views of g_data (std::list): g_tasks (0x4fc5f8, head 0x4fc5fc, count
# 0x4fc600) and g_tex_scrolls (N2:0x54e680, head 0x4fc5e4, count 0x4fc5e8), in SaveGame.cpp.
# g_score (N2:0x54a458) and g_keys (0x509838) are C++ variables too (InterfaceElement / Globals).

# texture scrolling (CJimmyGame)
0x4fc5ec val float g_tex_scroll_time                # seconds of scrolling, the wave's phase

# what ReadTaskFile read from a save's header (the menu's save slots copy it)
0x4fc680 val int g_save_level_id                     # level 4cc ('LV3E' ...)
0x4fc684 val float g_save_health
0x4fc688 val short g_save_lives
0x4fc68c val int g_save_score
0x4fc690 val int g_save_scene                         # the story message number (g_story_scene)

# saved game state
0x4f8438 array int g_object_states                   # [4200], per-object progress by the object's +0x6d8 index

# task list (CTaskList; the constructor also clears the bytes N2:0x54e80c and N2:0x54e825)

# demo (CTaskList::UpdateDemo, NextDemoLevel)

# the task file request (RequestTask 0x460e70; CTaskList::Process loads it)
0x4fc604 array char g_task_request
0x4fc67c val char g_task_requested
