;================================================================================
; Initial SRAM table.
;--------------------------------------------------------------------------------
; The ROM copies blocks of bytes from here on save file init. This table has an
; identical layout to the first $500 bytes of SRAM, although some values such as
; the file validity value, file name, and inverse checksum are skipped.
;
; NOTE: Set InitProgressIndicator to $80 for standard mode with instant post-aga
; world state
;
; See sram.asm for further documentation on how to write to this table.
;--------------------------------------------------------------------------------

fillword $0000 ; Zero out the table
fill $500      ;

org $B0B000 ; PC 0x183000
InitSRAMTable:
InitRoomDataWRAM:
org $B0B060 ; PC 0x183060
InitATAltarRoom: dw $0000 ; aga curtains
org $B0B092 ; PC 0x183092
InitSWBackEntryRoom: dw $0000 ; skull woods curtains

org $B0B20C
dw $F000, $F000 ; Pre-open kak bomb hut & brewery

org $B0B280 ; PC 0x183280 - 0x1832FF
InitOverworldEvents:
org $B0B282 ; PC 0x183282 - Lumberjacks
InitLumberjackOW: db $00
org $B0B29B ; PC 0x18329B - Open castle gate
InitHyruleCastleOW: db $20
org $B0B2DB ; PC 0x1832DB - Pyramid hole
InitPyramidOW: db $00
org $B0B2C3 ; PC 0x1832C3 - GT
InitDDMWestOW: db $00


org $B0B340 ; PC 0x183340
StartingEquipment:
StartingBow: skip 1                     ; PC 0x183340
StartingBoomerang: skip 1               ; PC 0x183341
StartingHookshot: skip 1                ; PC 0x183342
StartingBombs: skip 1                   ; PC 0x183343
StartingPowder: skip 1                  ; PC 0x183344
StartingFireRod: skip 1                 ; PC 0x183345
StartingIceRod: skip 1                  ; PC 0x183346
StartingBombos: skip 1                  ; PC 0x183347
StartingEther: skip 1                   ; PC 0x183348
StartingQuake: skip 1                   ; PC 0x183349
StartingLamp: skip 1                    ; PC 0x18334A
StartingHammer: skip 1                  ; PC 0x18334B
StartingFlute: skip 1                   ; PC 0x18334C
StartingBugNet: skip 1                  ; PC 0x18334D
StartingBookOfMudora: skip 1            ; PC 0x18334E
StartingBottleIndex: skip 1             ; PC 0x18334F
StartingSomaria: skip 1                 ; PC 0x183350
StartingByrna: skip 1                   ; PC 0x183351
StartingCape: skip 1                    ; PC 0x183352
StartingMirror: skip 1                  ; PC 0x183353
StartingGlove: skip 1                   ; PC 0x183354
StartingBoots: skip 1                   ; PC 0x183355
StartingFlippers: skip 1                ; PC 0x183356
StartingMoonPearl: skip 1               ; PC 0x183357
skip 1                                  ; PC 0x183358
StartingSword: skip 1                   ; PC 0x183359
StartingShield: skip 1                  ; PC 0x18335A
StartingArmor: skip 1                   ; PC 0x18335B
StartingBottleContentsOne: skip 1       ; PC 0x18335C
StartingBottleContentsTwo: skip 1       ; PC 0x18335D
StartingBottleContentsThree: skip 1     ; PC 0x18335E
StartingBottleContentsFour: skip 1      ; PC 0x18335F
StartingCurrentRupees: skip 2           ; PC 0x183360 \ Write same value to both
StartingDisplayRupees: skip 2           ; PC 0x183362 / of these
StartingCompasses: skip 2               ; PC 0x183364
StartingBigKeys: skip 2                 ; PC 0x183366
StartingMaps: skip 2                    ; PC 0x183368
skip 1                                  ; PC 0x18336A
StartingQuarterHearts: skip 1           ; PC 0x18336B
StartingHealth: db $18                  ; PC 0x18336C
StartingMaximumHealth: db $18           ; PC 0x18336D
StartingMagic: skip 1                   ; PC 0x18336E
StartingSmallKeys: db $FF               ; PC 0x18336F
StartingBombCapacity: db $0A            ; PC 0x183370
StartingArrowCapacity: db $1E           ; PC 0x183371
InitHeartsFiller: skip 1                ; PC 0x183372
InitMagicFiller: skip 1                 ; PC 0x183373
StartingPendants: skip 1                ; PC 0x183374
InitBombsFiller: skip 1                 ; PC 0x183375
InitArrowsFiller: skip 1                ; PC 0x183376
StartingArrows: skip 1                  ; PC 0x183377
skip 1                                  ; PC 0x183378
InitAbilityFlags: db $68                ; PC 0x183379
StartingCrystals: skip 1                ; PC 0x18337A
StartingMagicConsumption: skip 1        ; PC 0x18337B
StartingDungeonKeys:                    ;
StartingSewerKeys: skip 1               ; PC 0x18337C
StartingHyruleCastleKeys: skip 1        ; PC 0x18337D
StartingEasternKeys: skip 1             ; PC 0x18337E
StartingDesertKeys: skip 1              ; PC 0x18337F
StartingCastleTowerKeys: skip 1         ; PC 0x183380
StartingSwampKeys: skip 1               ; PC 0x183381
StartingPalaceOfDarknessKeys: skip 1    ; PC 0x183382
StartingMireKeys: skip 1                ; PC 0x183383
StartingSkullWoodsKeys: skip 1          ; PC 0x183384
StartingIcePalaceKeys: skip 1           ; PC 0x183385
StartingHeraKeys: skip 1                ; PC 0x183386
StartingThievesTownKeys: skip 1         ; PC 0x183387
StartingTurtleRockKeys: skip 1          ; PC 0x183388
StartingGanonsTowerKeys: skip 1         ; PC 0x183389
skip 1                                  ; PC 0x18338A
StartingGenericKeys: skip 1             ; PC 0x18338B
InitInventoryTracking: skip 2           ; PC 0x18338C \ Need to set bits here for silver arrows,
InitBowTracking: skip 2                 ; PC 0x18338E / boomerangs, powder/mushroom, etc 
InitItemLimitCounts: skip 16            ; PC 0x183390
skip 37                                 ;
InitProgressIndicator: db $02           ; PC 0x1833C5 - Set to $80 for instant post-aga with standard
InitProgressFlags: db $14               ; PC 0x1833C6 - Set to $00 for standard
InitMapIcons: skip 1                    ; PC 0x1833C7
InitStartingEntrance: db $01            ; PC 0x1833C8 - Set to $00 for standard
InitNpcFlagsVanilla: skip 1             ; PC 0x1833C9
InitCurrentWorld: skip 1                ; PC 0x1833CA
skip 1                                  ; PC 0x1833CB
InitFollowerIndicator: skip 1           ; PC 0x1833CC
InitFollowerXCoord: skip 2              ; PC 0x1833CD
InitFollowerYCoord: skip 2              ; PC 0x1833CF
InitDroppedFollowerIndoors: skip 1      ; PC 0x1833D1
InitDroppedFollowerLayer: skip 1        ; PC 0x1833D2
InitFollowerDropped: skip 1             ; PC 0x1833D3

org $B0B3D9 ; PC 0x1833D9 - 0x1833F0
StaticFileName: ; The validity value ($55AA) must be written manually on SRAM init at $7003E1
dw $0181, $0068, $006E, $018C
dw $0166, $0064, $0068, $018C
dw $0165, $0068, $006D, $018C

org $B0B401 ; PC 0x183401
InitDeathCounter:
dw $FFFF

;--------------------------------------------------------------------------------
; The following labels and their addresses are provided for convenience. You
; may want to write, for example, to InitHighestSword in addition to setting
; StartingSword. But any value can be written to the whole block from
; $30B000-$30B4FF (PC 0x183000-0x18034FF) and it will be initialized
; excluding ~28 bytes (File name, validity value, and checksum.)
;--------------------------------------------------------------------------------

org $B0B414 ; PC 0x183414-0x183416
InitMapOverlay: dw $0000

org $B0B417 ; PC 0x183417
InitHighestSword: db $00

org $B0B414 ; PC 0x183418-0x183419
InitGoalCounter: dw $0000

org $B0B422 ; PC 0x183422
InitHighestShield: db $00

org $B0B428 ; PC 0x183428
InitMapsCompasses: db $00

org $B0B429 ; PC 0x183429
InitPendantCounter: db $00

org $B0B454 ; PC 0x183454-0x183457
InitChallengeTimer: dw $0000, $0000

org $B0B46E ; PC 0x18346E
InitHighestMail: db $00

org $B0B471 ; PC 0x183471
InitCrystalCounter: db $00
