diff --git a/SGlib/SGlib.rel b/SGlib/SGlib.rel index bfa7b43..923ab86 100644 --- a/SGlib/SGlib.rel +++ b/SGlib/SGlib.rel @@ -1,5 +1,5 @@ XL3 -H 9 areas 43 global symbols +H 9 areas 46 global symbols M SGlib O -mz80 S _SG_SRAM Def008000 @@ -9,51 +9,54 @@ S _ROM_bank_to_be_mapped_on_slot2 Def00FFFF S _SRAM_bank_to_be_mapped_on_slot2 Def00FFFC S .__.ABS. Def000000 S ___sdcc_call_hl Ref000000 -A _CODE size 7C4 flags 0 addr 0 -S _SG_VRAMmemcpy_brief Def0006E1 -S _SG_loadSpritePatterns Def00011C -S _SG_detectKeyboard Def00042C -S _SG_getKeyboardJoypadPressed Def0004DC -S _SG_copySpritestoSAT Def0003B6 -S _SG_nmi_isr Def0007B1 -S _SG_setBackdropColor Def00005F -S _SG_getKeysPressed Def0003E1 -S _SG_getNextTileatXY Def000171 -S _SG_init Def000034 -S _SG_decompressZX7toVRAM Def000632 -S _SG_getKeycodes Def00051D -S _SG_setClippingWindow Def0002C2 -S _SG_finalizeSprites Def0003A1 +S __modsint Ref000000 +A _CODE size A4D flags 0 addr 0 +S _SG_VRAMmemcpy_brief Def000970 +S _SG_loadSpritePatterns Def000135 +S _SG_detectKeyboard Def0006AC +S _SG_getKeyboardJoypadPressed Def00075E +S _SG_copySpritestoSAT Def000639 +S _SG_nmi_isr Def000A3A +S _SG_setBackdropColor Def000062 +S _SG_getKeysPressed Def000661 +S _SG_getNextTileatXY Def00018A +S _SG_init Def000037 +S _SG_decompressZX7toVRAM Def0008C1 +S _SG_getKeycodes Def00079F +S _SG_initBMPmode Def0001AE +S _SG_setClippingWindow Def000541 +S _SG_finalizeSprites Def000624 S _SG_VDPturnOnFeature Def000000 -S _SG_getKeyboardJoypadReleased Def000504 -S _SG_scanKeyboardJoypad Def00044E -S _SG_setNextTileatXY Def00014D -S _SG_loadTilePatterns Def0000BC -S _SG_VRAMmemset Def000700 -S _SG_VRAMmemcpy Def0006BB -S _SG_getKeysReleased Def000409 -S _SG_setFrameInterruptHandler Def000754 -S _SG_loadTileMapArea Def0001D8 -S _SG_setSpriteMode Def00006A -S _SG_resetPauseRequest Def000426 -S _SG_loadTileMap Def000195 -S _SG_isr Def000758 -S _SG_getTile Def000192 -S _SG_getKeyboardJoypadHeld Def0004F1 -S _SG_loadTileColours Def0000EB -S _SG_addSpriteClipping Def0002E0 -S _SG_VRAMmemsetW Def000729 -S _SG_getKeysHeld Def0003F6 -S _SG_waitForVBlank Def0003CF -S _SG_setTile Def00016E +S _SG_getKeyboardJoypadReleased Def000786 +S _SG_scanKeyboardJoypad Def0006CE +S _SG_setNextTileatXY Def000166 +S _SG_loadTilePatterns Def0000D5 +S _SG_VRAMmemset Def00098C +S _SG_VRAMmemcpy Def00094A +S _SG_getKeysReleased Def000689 +S _SG_setFrameInterruptHandler Def0009E2 +S _SG_loadTileMapArea Def00042A +S _SG_setSpriteMode Def00006B +S _SG_resetPauseRequest Def0006A6 +S _SG_loadTileMap Def0003E7 +S _SG_isr Def0009E6 +S _SG_setPixel Def000305 +S _SG_getTile Def0001AB +S _SG_getKeyboardJoypadHeld Def000773 +S _SG_loadTileColours Def000104 +S _SG_addSpriteClipping Def00055F +S _SG_VRAMmemsetW Def0009B5 +S _SG_getKeysHeld Def000676 +S _SG_waitForVBlank Def00064F +S _SG_setTile Def000187 S _SG_VDPturnOffFeature Def00001D -S _SG_getKeyboardJoypadStatus Def0004D7 -S _SG_decompressZX7 Def0005DA -S _SG_initSprites Def000263 -S _SG_getKeysStatus Def0003DC -S _SG_addSprite Def000269 +S _SG_getKeyboardJoypadStatus Def000759 +S _SG_decompressZX7 Def000869 +S _SG_initSprites Def0004DA +S _SG_getKeysStatus Def00065C +S _SG_addSprite Def0004E0 S _VDPReg_init Def000015 -S _SG_queryPauseRequested Def000422 +S _SG_queryPauseRequested Def0006A2 A _DATA size 91 flags 0 addr 0 S _PauseRequested Def000001 S _SG_theFrameInterruptHandler Def00008F @@ -154,651 +157,797 @@ T 15 00 00 02 A0 06 FF 03 36 07 01 R 00 00 00 00 T 1D 00 00 R 00 00 00 00 -T 1D 00 00 EB 4A 21 00 00 06 00 09 46 7B 2F A0 77 +T 1D 00 00 EB 4A 21 00 00 06 00 09 7E F5 7B 2F 5F R 00 00 00 00 00 06 02 00 -T 2A 00 00 F3 D3 BF 79 F6 80 D3 BF FB C9 +T 2A 00 00 F1 A3 77 F3 D3 BF 79 F6 80 D3 BF FB C9 R 00 00 00 00 -T 34 00 00 +T 37 00 00 R 00 00 00 00 -T 34 00 00 0E 00 +T 37 00 00 0E 00 R 00 00 00 00 -T 36 00 00 +T 39 00 00 R 00 00 00 00 -T 36 00 00 F3 21 15 00 06 00 09 7E D3 BF 79 F6 80 +T 39 00 00 F3 21 15 00 06 00 09 7E D3 BF 79 F6 80 R 00 00 00 00 00 05 00 00 -T 43 00 00 D3 BF FB 0C 79 D6 08 38 EA CD 63 02 CD +T 46 00 00 D3 BF FB 0C 79 D6 08 38 EA CD DA 04 CD R 00 00 00 00 00 0D 00 00 -T 50 00 00 A1 03 CD B6 03 21 FF BF E5 AF 6F CD +T 53 00 00 24 06 CD 39 06 21 FF BF E5 AF 6F CD R 00 00 00 00 00 03 00 00 00 06 00 00 -T 5C 00 00 C2 02 C9 +T 5F 00 00 41 05 C9 R 00 00 00 00 00 03 00 00 -T 5F 00 00 +T 62 00 00 R 00 00 00 00 -T 5F 00 00 4F F3 79 D3 BF 3E 87 D3 BF FB C9 +T 62 00 00 F3 D3 BF 3E 87 D3 BF FB C9 R 00 00 00 00 -T 6A 00 00 +T 6B 00 00 R 00 00 00 00 -T 6A 00 00 4F CB 41 28 13 C5 21 02 01 CD 00 00 C1 +T 6B 00 00 6F CB 45 28 1F E5 21 02 01 CD 00 00 E1 R 00 00 00 00 00 0D 00 00 -T 77 00 00 21 10 00 22 02 00 22 04 00 18 11 -R 00 00 00 00 00 07 02 00 00 0A 02 00 -T 82 00 00 +T 78 00 00 3E 10 32 02 00 AF 32 03 00 FD 21 04 00 +R 00 00 00 00 00 06 02 00 00 0A 02 00 00 0E 02 00 +T 85 00 00 FD 36 00 10 AF 32 05 00 18 1D +R 00 00 00 00 00 09 02 00 +T 8F 00 00 R 00 00 00 00 -T 82 00 00 C5 21 02 01 CD 1D 00 C1 21 08 00 22 -R 00 00 00 00 00 08 00 00 -T 8E 00 00 02 00 22 04 00 -R 00 00 00 00 00 03 02 00 00 06 02 00 -T 93 00 00 +T 8F 00 00 E5 21 02 01 CD 1D 00 E1 3E 08 32 02 00 +R 00 00 00 00 00 08 00 00 00 0E 02 00 +T 9C 00 00 AF 32 03 00 FD 21 04 00 FD 36 00 08 AF +R 00 00 00 00 00 05 02 00 00 09 02 00 +T A9 00 00 32 05 00 +R 00 00 00 00 00 04 02 00 +T AC 00 00 R 00 00 00 00 -T 93 00 00 CB 49 28 1F 21 01 01 CD 00 00 FD 21 +T AC 00 00 CB 4D 28 1F 21 01 01 CD 00 00 FD 21 R 00 00 00 00 00 0B 00 00 -T 9F 00 00 04 00 FD CB 00 26 FD CB 01 16 FD 21 +T B8 00 00 04 00 FD CB 00 26 FD CB 01 16 FD 21 R 00 00 00 00 00 03 02 00 -T AB 00 00 02 00 FD CB 00 26 FD CB 01 16 C9 +T C4 00 00 02 00 FD CB 00 26 FD CB 01 16 C9 R 00 00 00 00 00 03 02 00 -T B6 00 00 +T CF 00 00 R 00 00 00 00 -T B6 00 00 21 01 01 C3 1D 00 +T CF 00 00 21 01 01 C3 1D 00 R 00 00 00 00 00 07 00 00 -T BC 00 00 +T D5 00 00 R 00 00 00 00 -T BC 00 00 DD E5 DD 21 00 00 DD 39 F3 7B 87 87 87 +T D5 00 00 DD E5 DD 21 00 00 DD 39 F3 7B 87 87 87 R 00 00 00 00 -T C9 00 00 D3 BF EB 29 29 29 EB 7A F6 40 D3 BF FB +T E2 00 00 D3 BF EB 29 29 29 EB 7A F6 40 D3 BF FB R 00 00 00 00 -T D6 00 00 DD 4E 04 DD 46 05 EB +T EF 00 00 DD 4E 04 DD 46 05 EB R 00 00 00 00 -T DD 00 00 +T F6 00 00 R 00 00 00 00 -T DD 00 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 +T F6 00 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 R 00 00 00 00 -T EA 00 00 E9 +T 03 01 00 E9 R 00 00 00 00 -T EB 00 00 +T 04 01 00 R 00 00 00 00 -T EB 00 00 DD E5 DD 21 00 00 DD 39 F3 7B 87 87 87 +T 04 01 00 DD E5 DD 21 00 00 DD 39 F3 7B 87 87 87 R 00 00 00 00 -T F8 00 00 D3 BF EB 29 29 29 EB 7A C6 20 F6 40 D3 +T 11 01 00 D3 BF EB 29 29 29 EB 7A C6 20 F6 40 D3 R 00 00 00 00 -T 05 01 00 BF FB DD 4E 04 DD 46 05 EB +T 1E 01 00 BF FB DD 4E 04 DD 46 05 EB R 00 00 00 00 -T 0E 01 00 +T 27 01 00 R 00 00 00 00 -T 0E 01 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 +T 27 01 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 R 00 00 00 00 -T 1B 01 00 E9 +T 34 01 00 E9 R 00 00 00 00 -T 1C 01 00 +T 35 01 00 R 00 00 00 00 -T 1C 01 00 DD E5 DD 21 00 00 DD 39 F3 7B 87 87 87 +T 35 01 00 DD E5 DD 21 00 00 DD 39 F3 7B 87 87 87 R 00 00 00 00 -T 29 01 00 D3 BF EB 29 29 29 EB 7A C6 38 F6 40 D3 +T 42 01 00 D3 BF EB 29 29 29 EB 7A C6 38 F6 40 D3 R 00 00 00 00 -T 36 01 00 BF FB DD 4E 04 DD 46 05 EB +T 4F 01 00 BF FB DD 4E 04 DD 46 05 EB R 00 00 00 00 -T 3F 01 00 +T 58 01 00 R 00 00 00 00 -T 3F 01 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 +T 58 01 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 R 00 00 00 00 -T 4C 01 00 E9 +T 65 01 00 E9 R 00 00 00 00 -T 4D 01 00 +T 66 01 00 R 00 00 00 00 -T 4D 01 00 4F F3 7D 0F 0F 0F E6 E0 41 80 D3 BF 26 +T 66 01 00 4F F3 7D 0F 0F 0F E6 E0 41 80 D3 BF 26 R 00 00 00 00 -T 5A 01 00 00 29 29 29 29 29 11 00 18 19 06 00 09 +T 73 01 00 00 29 29 29 29 29 11 00 18 19 06 00 09 R 00 00 00 00 -T 67 01 00 7C F6 40 D3 BF FB C9 +T 80 01 00 7C F6 40 D3 BF FB C9 R 00 00 00 00 -T 6E 01 00 +T 87 01 00 R 00 00 00 00 -T 6E 01 00 D3 BE C9 +T 87 01 00 D3 BE C9 R 00 00 00 00 -T 71 01 00 +T 8A 01 00 R 00 00 00 00 -T 71 01 00 4F F3 7D 0F 0F 0F E6 E0 41 80 D3 BF 26 +T 8A 01 00 4F F3 7D 0F 0F 0F E6 E0 41 80 D3 BF 26 R 00 00 00 00 -T 7E 01 00 00 29 29 29 29 29 11 00 18 19 06 00 09 +T 97 01 00 00 29 29 29 29 29 11 00 18 19 06 00 09 R 00 00 00 00 -T 8B 01 00 7C E6 BF D3 BF FB C9 +T A4 01 00 7C E6 BF D3 BF FB C9 R 00 00 00 00 -T 92 01 00 +T AB 01 00 R 00 00 00 00 -T 92 01 00 DB BE C9 +T AB 01 00 DB BE C9 R 00 00 00 00 -T 95 01 00 +T AE 01 00 R 00 00 00 00 -T 95 01 00 DD E5 DD 21 00 00 DD 39 4F F3 7D 0F 0F +T AE 01 00 DD E5 DD 21 00 00 DD 39 FD 21 F2 FF FD R 00 00 00 00 -T A2 01 00 0F E6 E0 41 80 D3 BF 26 00 29 29 29 29 +T BB 01 00 39 FD F9 47 7D E6 0F 87 87 87 87 4F 78 R 00 00 00 00 -T AF 01 00 29 11 00 18 19 06 00 09 7C F6 40 D3 BF +T C8 01 00 E6 0F 81 DD 77 F4 AF DD 77 FA DD 77 FB R 00 00 00 00 -T BC 01 00 FB DD 4E 06 DD 46 07 DD 5E 04 DD 56 05 +T D5 01 00 DD 36 FC 00 R 00 00 00 00 -T C9 01 00 +T D9 01 00 R 00 00 00 00 -T C9 01 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 +T D9 01 00 DD 7E FC D6 18 CA 00 03 DD 7E FA DD 77 +R 00 00 00 00 00 09 00 00 +T E6 01 00 FD DD 7E FB DD 77 FE DD 36 FF 00 R 00 00 00 00 -T D6 01 00 F1 E9 +T F1 01 00 R 00 00 00 00 -T D8 01 00 +T F1 01 00 DD 7E FF D6 20 CA EE 02 F3 DD 6E FC 26 +R 00 00 00 00 00 09 00 00 +T FE 01 00 00 29 29 29 DD 75 F5 DD 74 F6 DD CB F6 R 00 00 00 00 -T D8 01 00 DD E5 DD 21 00 00 DD 39 F5 F5 DD 77 FC +T 0B 02 00 2E DD CB F5 1E DD CB F6 2E DD CB F5 1E R 00 00 00 00 -T E5 01 00 4D DD 46 06 DD 71 FD +T 18 02 00 DD CB F6 2E DD CB F5 1E 0E 00 DD 5E FF R 00 00 00 00 -T EC 01 00 +T 25 02 00 16 00 EB 29 29 29 EB DD 73 F7 DD 72 F8 R 00 00 00 00 -T EC 01 00 59 16 00 DD 6E 07 26 00 19 DD 5E FD 16 +T 32 02 00 DD CB F8 2E DD CB F7 1E DD CB F8 2E DD R 00 00 00 00 -T F9 01 00 00 7B 95 7A 9C E2 03 02 EE 80 -R 00 00 00 00 00 09 00 00 -T 03 02 00 +T 3F 02 00 CB F7 1E DD CB F8 2E DD CB F7 1E DD 7E R 00 00 00 00 -T 03 02 00 F2 5B 02 F3 DD 7E FD 0F 0F 0F E6 E0 DD -R 00 00 00 00 00 04 00 00 -T 10 02 00 6E FC 85 D3 BF EB 29 29 29 29 29 11 +T 4C 02 00 F7 87 87 87 81 DD 77 FB 11 08 00 CD R 00 00 00 00 -T 1C 02 00 00 18 19 DD 5E FC 16 00 19 7C F6 40 D3 +T 58 02 00 00 00 DD 73 F9 DD 72 FA DD 7E F9 DD 86 +R 00 00 00 00 02 03 07 00 +T 65 02 00 FB DD 77 FB D3 BF DD 7E F5 DD 77 F6 DD R 00 00 00 00 -T 29 02 00 BF FB DD 5E 04 DD 56 05 DD 73 FE DD 72 +T 72 02 00 36 F5 00 DD 36 F2 00 DD 7E F6 C6 20 DD R 00 00 00 00 -T 36 02 00 FF +T 7F 02 00 77 F3 06 03 R 00 00 00 00 -T 37 02 00 +T 83 02 00 R 00 00 00 00 -T 37 02 00 DD 6E FE DD 66 FF 7E D3 BE DD 34 FE 20 +T 83 02 00 DD CB F7 26 DD CB F8 16 10 F6 DD 7E F2 R 00 00 00 00 -T 44 02 00 03 DD 34 FF +T 90 02 00 DD 86 F7 DD 77 F5 DD 7E F3 DD 8E F8 DD R 00 00 00 00 -T 48 02 00 +T 9D 02 00 77 F6 DD 7E F9 DD 77 F2 DD 7E FA DD 77 R 00 00 00 00 -T 48 02 00 3D B7 20 EB 68 26 00 19 DD 75 04 DD 74 +T AA 02 00 F3 DD 7E F2 DD 86 F5 DD 77 FA DD 7E F3 R 00 00 00 00 -T 55 02 00 05 DD 34 FD 18 91 +T B7 02 00 DD 8E F6 DD 77 FB F6 40 D3 BF FB 0E 08 R 00 00 00 00 -T 5B 02 00 +T C4 02 00 R 00 00 00 00 -T 5B 02 00 DD F9 DD E1 E1 F1 F1 E9 +T C4 02 00 79 B7 28 08 DD 7E F4 D3 BE 0D 18 F4 R 00 00 00 00 -T 63 02 00 +T D0 02 00 R 00 00 00 00 -T 63 02 00 21 8E 00 36 00 C9 -R 00 00 00 00 00 04 01 00 -T 69 02 00 +T D0 02 00 DD 6E FC DD 7E FF CD 66 01 DD 4E FD DD +R 00 00 00 00 00 0A 00 00 +T DD 02 00 34 FD 20 03 DD 34 FE +R 00 00 00 00 +T E4 02 00 +R 00 00 00 00 +T E4 02 00 79 CD 87 01 DD 34 FF C3 F1 01 +R 00 00 00 00 00 05 00 00 00 0B 00 00 +T EE 02 00 +R 00 00 00 00 +T EE 02 00 DD 7E FD DD 77 FA DD 7E FE DD 77 FB DD +R 00 00 00 00 +T FB 02 00 34 FC C3 D9 01 +R 00 00 00 00 00 06 00 00 +T 00 03 00 +R 00 00 00 00 +T 00 03 00 DD F9 DD E1 C9 +R 00 00 00 00 +T 05 03 00 +R 00 00 00 00 +T 05 03 00 DD E5 DD 21 00 00 DD 39 F5 F5 67 4D 7C +R 00 00 00 00 +T 12 03 00 E6 07 47 11 80 00 04 18 04 +R 00 00 00 00 +T 1B 03 00 +R 00 00 00 00 +T 1B 03 00 CB 2A CB 1B +R 00 00 00 00 +T 1F 03 00 +R 00 00 00 00 +T 1F 03 00 10 FA DD 73 FC 79 0F 0F 0F E6 1F 57 1E +R 00 00 00 00 +T 2C 03 00 00 7C 0F 0F 0F E6 1F 6F 26 00 29 29 29 +R 00 00 00 00 +T 39 03 00 19 79 E6 07 4F 06 00 09 DD 75 FD DD 74 +R 00 00 00 00 +T 46 03 00 FE 3E 10 DD 96 04 3E 00 17 EE 01 4F F3 +R 00 00 00 00 +T 53 03 00 DD 7E FD DD 77 FF D3 BF DD 46 FE 78 E6 +R 00 00 00 00 +T 60 03 00 BF D3 BF FB 00 00 00 CB 41 28 09 DD 5E +R 00 00 00 00 +T 6D 03 00 FC DB BE B3 5F 18 09 +R 00 00 00 00 +T 74 03 00 +R 00 00 00 00 +T 74 03 00 DD 7E FC 2F 5F DB BE A3 5F +R 00 00 00 00 +T 7D 03 00 +R 00 00 00 00 +T 7D 03 00 F3 DD 7E FF D3 BF 78 F6 40 D3 BF FB 7B +R 00 00 00 00 +T 8A 03 00 D3 BE DD 7E 04 CB 67 20 4D E6 0F DD 77 +R 00 00 00 00 +T 97 03 00 04 F3 DD 7E FF D3 BF DD 46 FD DD 7E FE +R 00 00 00 00 +T A4 03 00 C6 20 DD 77 FE E6 BF D3 BF FB 00 00 00 +R 00 00 00 00 +T B1 03 00 DB BE 5F CB 41 28 0F 7B E6 0F 4F DD 7E +R 00 00 00 00 +T BE 03 00 04 87 87 87 87 B1 4F 18 08 +R 00 00 00 00 +T C7 03 00 +R 00 00 00 00 +T C7 03 00 7B E6 F0 DD 4E 04 B1 4F +R 00 00 00 00 +T CF 03 00 +R 00 00 00 00 +T CF 03 00 F3 DD 7E FF D3 BF DD 7E FE F6 40 D3 BF +R 00 00 00 00 +T DC 03 00 FB 79 D3 BE +R 00 00 00 00 +T E0 03 00 +R 00 00 00 00 +T E0 03 00 DD F9 DD E1 E1 33 E9 +R 00 00 00 00 +T E7 03 00 R 00 00 00 00 -T 69 02 00 DD E5 DD 21 00 00 DD 39 3B DD 77 FF 4D +T E7 03 00 DD E5 DD 21 00 00 DD 39 4F F3 7D 0F 0F R 00 00 00 00 -T 76 02 00 3A 8E 00 D6 20 30 3E 59 16 00 1B 7B D6 +T F4 03 00 0F E6 E0 41 80 D3 BF 26 00 29 29 29 29 +R 00 00 00 00 +T 01 04 00 29 11 00 18 19 06 00 09 7C F6 40 D3 BF +R 00 00 00 00 +T 0E 04 00 FB DD 4E 06 DD 46 07 DD 5E 04 DD 56 05 +R 00 00 00 00 +T 1B 04 00 +R 00 00 00 00 +T 1B 04 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 +R 00 00 00 00 +T 28 04 00 F1 E9 +R 00 00 00 00 +T 2A 04 00 +R 00 00 00 00 +T 2A 04 00 DD E5 DD 21 00 00 DD 39 FD 21 F6 FF FD +R 00 00 00 00 +T 37 04 00 39 FD F9 DD 77 FE DD 75 FD DD 7E 06 DD +R 00 00 00 00 +T 44 04 00 77 F6 DD 7E FD DD 77 FF +R 00 00 00 00 +T 4C 04 00 +R 00 00 00 00 +T 4C 04 00 DD 7E FD DD 77 F7 DD 36 F8 00 DD 7E 07 +R 00 00 00 00 +T 59 04 00 DD 77 F9 DD 36 FA 00 DD 7E F9 DD 86 F7 +R 00 00 00 00 +T 66 04 00 DD 77 FB 3E 00 DD 8E F8 DD 77 FC DD 4E +R 00 00 00 00 +T 73 04 00 FF 06 00 79 DD 96 FB 78 DD 9E FC E2 +R 00 00 00 00 +T 7F 04 00 83 04 EE 80 +R 00 00 00 00 00 03 00 00 +T 83 04 00 +R 00 00 00 00 +T 83 04 00 F2 D2 04 F3 DD 7E FF 0F 0F 0F E6 E0 DD +R 00 00 00 00 00 04 00 00 +T 90 04 00 5E FE 83 D3 BF 69 60 29 29 29 29 29 01 +R 00 00 00 00 +T 9D 04 00 00 18 09 DD 4E FE 06 00 09 7C F6 40 D3 +R 00 00 00 00 +T AA 04 00 BF FB DD 4E 04 DD 46 05 59 50 DD 7E F6 +R 00 00 00 00 +T B7 04 00 +R 00 00 00 00 +T B7 04 00 F5 1A D3 BE F1 13 3D 20 F7 DD 6E F6 26 +R 00 00 00 00 +T C4 04 00 00 09 DD 75 04 DD 74 05 DD 34 FF C3 +R 00 00 00 00 +T D0 04 00 4C 04 +R 00 00 00 00 00 03 00 00 +T D2 04 00 +R 00 00 00 00 +T D2 04 00 DD F9 DD E1 E1 F1 F1 E9 +R 00 00 00 00 +T DA 04 00 +R 00 00 00 00 +T DA 04 00 21 8E 00 36 00 C9 R 00 00 00 00 00 04 01 00 -T 83 02 00 D0 B2 28 30 3A 8E 00 87 87 47 11 0E 00 -R 00 00 00 00 00 08 01 00 00 0E 01 00 -T 90 02 00 68 04 26 00 19 71 68 04 26 00 19 DD 7E +T E0 04 00 +R 00 00 00 00 +T E0 04 00 DD E5 DD 21 00 00 DD 39 F5 DD 77 FF DD +R 00 00 00 00 +T ED 04 00 75 FE 3A 8E 00 D6 20 30 43 DD 4E FE 06 +R 00 00 00 00 00 06 01 00 +T FA 04 00 00 0B 79 D6 D0 B0 28 33 3A 8E 00 87 87 +R 00 00 00 00 00 0C 01 00 +T 07 05 00 4F 11 0E 00 69 0C 26 00 19 DD 7E FE 77 +R 00 00 00 00 00 05 01 00 +T 14 05 00 69 0C 26 00 19 DD 7E FF 77 69 0C 26 00 R 00 00 00 00 -T 9D 02 00 FF 77 68 04 26 00 19 DD 7E 04 77 68 26 +T 21 05 00 19 DD 7E 04 77 69 26 00 19 DD 7E 05 77 R 00 00 00 00 -T AA 02 00 00 19 DD 7E 05 77 FD 21 8E 00 FD 34 00 -R 00 00 00 00 00 0B 01 00 -T B7 02 00 +T 2E 05 00 FD 21 8E 00 FD 34 00 +R 00 00 00 00 00 05 01 00 +T 35 05 00 R 00 00 00 00 -T B7 02 00 3E 01 18 01 +T 35 05 00 3E 01 18 01 R 00 00 00 00 -T BB 02 00 +T 39 05 00 R 00 00 00 00 -T BB 02 00 AF +T 39 05 00 AF R 00 00 00 00 -T BC 02 00 +T 3A 05 00 R 00 00 00 00 -T BC 02 00 33 DD E1 E1 C1 E9 +T 3A 05 00 DD F9 DD E1 E1 C1 E9 R 00 00 00 00 -T C2 02 00 +T 41 05 00 R 00 00 00 00 -T C2 02 00 32 0A 00 7D 32 0B 00 FD 21 02 00 FD 39 +T 41 05 00 32 0A 00 7D 32 0B 00 FD 21 02 00 FD 39 R 00 00 00 00 00 04 01 00 00 08 01 00 -T CF 02 00 FD 7E 00 32 0C 00 FD 7E 01 FD 23 32 +T 4E 05 00 FD 7E 00 32 0C 00 FD 7E 01 FD 23 32 R 00 00 00 00 00 07 01 00 -T DB 02 00 0D 00 E1 F1 E9 +T 5A 05 00 0D 00 E1 F1 E9 R 00 00 00 00 00 03 01 00 -T E0 02 00 +T 5F 05 00 R 00 00 00 00 -T E0 02 00 DD E5 DD 21 00 00 DD 39 F5 F5 DD 75 FE +T 5F 05 00 DD E5 DD 21 00 00 DD 39 F5 F5 DD 75 FE R 00 00 00 00 -T ED 02 00 DD 74 FF 33 33 D5 3A 8E 00 D6 20 D2 +T 6C 05 00 DD 74 FF 33 33 D5 3A 8E 00 D6 20 D2 R 00 00 00 00 00 0A 01 00 -T F9 02 00 99 03 3A 0C 00 4F 06 00 79 DD 96 FE 78 +T 78 05 00 1C 06 3A 0C 00 4F 06 00 79 DD 96 FE 78 R 00 00 00 00 00 03 00 00 00 06 01 00 -T 06 03 00 DD 9E FF E2 0E 03 EE 80 +T 85 05 00 DD 9E FF E2 8D 05 EE 80 R 00 00 00 00 00 07 00 00 -T 0E 03 00 +T 8D 05 00 +R 00 00 00 00 +T 8D 05 00 FA A9 05 3A 0A 00 4F 06 00 21 04 00 79 +R 00 00 00 00 00 04 00 00 00 07 01 00 00 0D 02 00 +T 9A 05 00 96 23 4F 78 9E 47 D1 E1 E5 D5 AF ED 42 R 00 00 00 00 -T 0E 03 00 FA 28 03 3A 0A 00 06 00 21 04 00 96 23 -R 00 00 00 00 00 04 00 00 00 07 01 00 00 0C 02 00 -T 1B 03 00 4F 78 9E 47 D1 E1 E5 D5 AF ED 42 30 03 +T A7 05 00 30 03 R 00 00 00 00 -T 28 03 00 +T A9 05 00 R 00 00 00 00 -T 28 03 00 AF 18 6F +T A9 05 00 AF 18 71 R 00 00 00 00 -T 2B 03 00 +T AC 05 00 R 00 00 00 00 -T 2B 03 00 3A 0D 00 4F 06 00 79 DD 96 FC 78 DD 9E +T AC 05 00 3A 0D 00 4F 06 00 79 DD 96 FC 78 DD 9E R 00 00 00 00 00 04 01 00 -T 38 03 00 FD E2 3E 03 EE 80 +T B9 05 00 FD E2 BF 05 EE 80 R 00 00 00 00 00 05 00 00 -T 3E 03 00 +T BF 05 00 R 00 00 00 00 -T 3E 03 00 FA 56 03 3A 0B 00 06 00 21 02 00 96 23 -R 00 00 00 00 00 04 00 00 00 07 01 00 00 0C 02 00 -T 4B 03 00 4F 78 9E 47 E1 E5 AF ED 42 30 03 +T BF 05 00 FA D9 05 3A 0B 00 4F 06 00 21 02 00 79 +R 00 00 00 00 00 04 00 00 00 07 01 00 00 0D 02 00 +T CC 05 00 96 23 4F 78 9E 47 E1 E5 AF ED 42 30 03 R 00 00 00 00 -T 56 03 00 +T D9 05 00 R 00 00 00 00 -T 56 03 00 AF 18 41 +T D9 05 00 AF 18 41 R 00 00 00 00 -T 59 03 00 +T DC 05 00 R 00 00 00 00 -T 59 03 00 C1 C5 0B 79 D6 D0 B0 28 33 3A 8E 00 87 +T DC 05 00 C1 C5 0B 79 D6 D0 B0 28 33 3A 8E 00 87 R 00 00 00 00 00 0D 01 00 -T 66 03 00 87 4F 11 0E 00 69 0C 26 00 19 DD 7E FC +T E9 05 00 87 4F 11 0E 00 69 0C 26 00 19 DD 7E FC R 00 00 00 00 00 06 01 00 -T 73 03 00 77 69 0C 26 00 19 DD 7E FE 77 69 0C 26 +T F6 05 00 77 69 0C 26 00 19 DD 7E FE 77 69 0C 26 R 00 00 00 00 -T 80 03 00 00 19 DD 7E 04 77 69 26 00 19 DD 7E 05 +T 03 06 00 00 19 DD 7E 04 77 69 26 00 19 DD 7E 05 R 00 00 00 00 -T 8D 03 00 77 FD 21 8E 00 FD 34 00 +T 10 06 00 77 FD 21 8E 00 FD 34 00 R 00 00 00 00 00 06 01 00 -T 95 03 00 +T 18 06 00 R 00 00 00 00 -T 95 03 00 3E 01 18 01 +T 18 06 00 3E 01 18 01 R 00 00 00 00 -T 99 03 00 +T 1C 06 00 R 00 00 00 00 -T 99 03 00 AF +T 1C 06 00 AF R 00 00 00 00 -T 9A 03 00 +T 1D 06 00 R 00 00 00 00 -T 9A 03 00 DD F9 DD E1 E1 C1 E9 +T 1D 06 00 DD F9 DD E1 E1 C1 E9 R 00 00 00 00 -T A1 03 00 +T 24 06 00 R 00 00 00 00 -T A1 03 00 3A 8E 00 D6 20 D0 01 0E 00 3A 8E 00 26 +T 24 06 00 3A 8E 00 D6 20 D0 01 0E 00 3A 8E 00 26 R 00 00 00 00 00 04 01 00 00 0A 01 00 00 0D 01 00 -T AE 03 00 00 6F 29 29 09 36 D0 C9 +T 31 06 00 00 6F 29 29 09 36 D0 C9 R 00 00 00 00 -T B6 03 00 +T 39 06 00 R 00 00 00 00 -T B6 03 00 F3 3E 00 D3 BF 3E 5B D3 BF FB 01 0E 00 +T 39 06 00 F3 3E 00 D3 BF 3E 5B D3 BF FB 11 0E 00 R 00 00 00 00 00 0E 01 00 -T C3 03 00 1E 80 +T 46 06 00 06 80 R 00 00 00 00 -T C5 03 00 +T 48 06 00 R 00 00 00 00 -T C5 03 00 0A D3 BE 03 1D 7B B7 20 F7 C9 +T 48 06 00 1A D3 BE 13 10 FA C9 R 00 00 00 00 -T CF 03 00 +T 4F 06 00 R 00 00 00 00 -T CF 03 00 21 00 00 36 00 +T 4F 06 00 21 00 00 36 00 R 00 00 00 00 00 04 01 00 -T D4 03 00 +T 54 06 00 R 00 00 00 00 -T D4 03 00 21 00 00 CB 46 28 F9 C9 +T 54 06 00 21 00 00 CB 46 28 F9 C9 R 00 00 00 00 00 04 01 00 -T DC 03 00 +T 5C 06 00 R 00 00 00 00 -T DC 03 00 ED 5B 02 00 C9 +T 5C 06 00 ED 5B 02 00 C9 R 00 00 00 00 00 05 01 00 -T E1 03 00 +T 61 06 00 R 00 00 00 00 -T E1 03 00 3A 04 00 2F 4F 3A 05 00 2F 47 3A 02 00 +T 61 06 00 3A 04 00 2F 4F 3A 05 00 2F 47 3A 02 00 R 00 00 00 00 00 04 01 00 00 09 01 00 00 0E 01 00 -T EE 03 00 A1 5F 3A 03 00 A0 57 C9 +T 6E 06 00 A1 5F 3A 03 00 A0 57 C9 R 00 00 00 00 00 06 01 00 -T F6 03 00 +T 76 06 00 R 00 00 00 00 -T F6 03 00 3A 02 00 FD 21 04 00 FD A6 00 5F 3A +T 76 06 00 3A 02 00 FD 21 04 00 FD A6 00 5F 3A R 00 00 00 00 00 04 01 00 00 08 01 00 -T 02 04 00 03 00 FD A6 01 57 C9 +T 82 06 00 03 00 FD A6 01 57 C9 R 00 00 00 00 00 03 01 00 -T 09 04 00 +T 89 06 00 R 00 00 00 00 -T 09 04 00 3A 02 00 2F F5 3A 03 00 2F 4F F1 FD 21 +T 89 06 00 3A 02 00 2F 4F 3A 03 00 2F 47 79 FD 21 R 00 00 00 00 00 04 01 00 00 09 01 00 -T 16 04 00 04 00 FD A6 00 5F 79 FD A6 01 57 C9 +T 96 06 00 04 00 FD A6 00 5F 78 FD A6 01 57 C9 R 00 00 00 00 00 03 01 00 -T 22 04 00 +T A2 06 00 R 00 00 00 00 -T 22 04 00 3A 01 00 C9 +T A2 06 00 3A 01 00 C9 R 00 00 00 00 00 04 01 00 -T 26 04 00 +T A6 06 00 R 00 00 00 00 -T 26 04 00 21 01 00 36 00 C9 +T A6 06 00 21 01 00 36 00 C9 R 00 00 00 00 00 04 01 00 -T 2C 04 00 +T AC 06 00 R 00 00 00 00 -T 2C 04 00 0E 00 3E 92 D3 DF 3E 55 D3 DE DB DE D6 +T AC 06 00 0E 00 3E 92 D3 DF 3E 55 D3 DE DB DE D6 R 00 00 00 00 -T 39 04 00 55 20 0C 3E AA D3 DE DB DE D6 AA 20 02 +T B9 06 00 55 20 0C 3E AA D3 DE DB DE D6 AA 20 02 R 00 00 00 00 -T 46 04 00 0E 01 +T C6 06 00 0E 01 R 00 00 00 00 -T 48 04 00 +T C8 06 00 R 00 00 00 00 -T 48 04 00 3E 07 D3 DE 79 C9 +T C8 06 00 3E 07 D3 DE 79 C9 R 00 00 00 00 -T 4E 04 00 +T CE 06 00 R 00 00 00 00 -T 4E 04 00 01 00 00 3E 06 D3 DE DB DC CB 6F 20 03 +T CE 06 00 01 00 00 3E 06 D3 DE DB DC CB 6F 20 03 R 00 00 00 00 -T 5B 04 00 01 08 00 +T DB 06 00 01 08 00 R 00 00 00 00 -T 5E 04 00 +T DE 06 00 R 00 00 00 00 -T 5E 04 00 CB 77 20 02 CB C1 +T DE 06 00 CB 77 20 04 CB C1 06 00 R 00 00 00 00 -T 64 04 00 +T E6 06 00 R 00 00 00 00 -T 64 04 00 DB DD CB 57 20 02 CB D8 +T E6 06 00 DB DD CB 57 20 02 06 08 R 00 00 00 00 -T 6C 04 00 +T EE 06 00 R 00 00 00 00 -T 6C 04 00 3E 05 D3 DE DB DC CB 6F 20 02 CB D1 +T EE 06 00 3E 05 D3 DE DB DC CB 6F 20 02 CB D1 R 00 00 00 00 -T 78 04 00 +T FA 06 00 R 00 00 00 00 -T 78 04 00 DB DD CB 5F 20 02 CB D0 +T FA 06 00 DB DD CB 5F 20 02 CB D0 R 00 00 00 00 -T 80 04 00 +T 02 07 00 R 00 00 00 00 -T 80 04 00 3E 04 D3 DE DB DC CB 6F 20 02 CB C9 +T 02 07 00 3E 04 D3 DE DB DC CB 6F 20 02 CB C9 R 00 00 00 00 -T 8C 04 00 +T 0E 07 00 R 00 00 00 00 -T 8C 04 00 3E 03 D3 DE DB DC CB 67 20 02 CB E9 +T 0E 07 00 3E 03 D3 DE DB DC CB 67 20 02 CB E9 R 00 00 00 00 -T 98 04 00 +T 1A 07 00 R 00 00 00 00 -T 98 04 00 3E 02 D3 DE DB DC CB 67 20 02 CB E1 +T 1A 07 00 3E 02 D3 DE DB DC CB 67 20 02 CB E1 R 00 00 00 00 -T A4 04 00 +T 26 07 00 R 00 00 00 00 -T A4 04 00 CB 57 20 02 CB C8 +T 26 07 00 CB 57 20 02 CB C8 R 00 00 00 00 -T AA 04 00 +T 2C 07 00 R 00 00 00 00 -T AA 04 00 3E 01 D3 DE DB DC CB 4F 20 02 CB F1 +T 2C 07 00 3E 01 D3 DE DB DC CB 4F 20 02 CB F1 R 00 00 00 00 -T B6 04 00 +T 38 07 00 R 00 00 00 00 -T B6 04 00 CB 57 20 02 CB F9 +T 38 07 00 CB 57 20 02 CB F9 R 00 00 00 00 -T BC 04 00 +T 3E 07 00 R 00 00 00 00 -T BC 04 00 3E 00 D3 DE DB DC CB 57 20 02 CB C0 +T 3E 07 00 3E 00 D3 DE DB DC CB 57 20 02 CB C0 R 00 00 00 00 -T C8 04 00 +T 4A 07 00 R 00 00 00 00 -T C8 04 00 3E 07 D3 DE 2A 06 00 22 08 00 ED 43 +T 4A 07 00 3E 07 D3 DE 2A 06 00 22 08 00 ED 43 R 00 00 00 00 00 08 01 00 00 0B 01 00 -T D4 04 00 06 00 C9 +T 56 07 00 06 00 C9 R 00 00 00 00 00 03 01 00 -T D7 04 00 +T 59 07 00 R 00 00 00 00 -T D7 04 00 ED 5B 06 00 C9 +T 59 07 00 ED 5B 06 00 C9 R 00 00 00 00 00 05 01 00 -T DC 04 00 +T 5E 07 00 R 00 00 00 00 -T DC 04 00 3A 08 00 2F 4F 3A 09 00 2F 47 3A 06 00 +T 5E 07 00 3A 08 00 2F 4F 3A 09 00 2F 47 3A 06 00 R 00 00 00 00 00 04 01 00 00 09 01 00 00 0E 01 00 -T E9 04 00 A1 5F 3A 07 00 A0 57 C9 +T 6B 07 00 A1 5F 3A 07 00 A0 57 C9 R 00 00 00 00 00 06 01 00 -T F1 04 00 +T 73 07 00 R 00 00 00 00 -T F1 04 00 3A 06 00 FD 21 08 00 FD A6 00 5F 3A +T 73 07 00 3A 06 00 FD 21 08 00 FD A6 00 5F 3A R 00 00 00 00 00 04 01 00 00 08 01 00 -T FD 04 00 07 00 FD A6 01 57 C9 +T 7F 07 00 07 00 FD A6 01 57 C9 R 00 00 00 00 00 03 01 00 -T 04 05 00 +T 86 07 00 R 00 00 00 00 -T 04 05 00 3A 06 00 2F F5 3A 07 00 2F 4F F1 FD 21 +T 86 07 00 3A 06 00 2F 4F 3A 07 00 2F 47 79 FD 21 R 00 00 00 00 00 04 01 00 00 09 01 00 -T 11 05 00 08 00 FD A6 00 5F 79 FD A6 01 57 C9 +T 93 07 00 08 00 FD A6 00 5F 78 FD A6 01 57 C9 R 00 00 00 00 00 03 01 00 -T 1D 05 00 +T 9F 07 00 R 00 00 00 00 -T 1D 05 00 DD E5 DD 21 00 00 DD 39 FD 21 F8 FF FD +T 9F 07 00 DD E5 DD 21 00 00 DD 39 FD 21 F6 FF FD R 00 00 00 00 -T 2A 05 00 39 FD F9 DD 75 FB DD 74 FC DD 36 F8 00 +T AC 07 00 39 FD F9 DD 75 F9 DD 74 FA DD 36 F6 00 R 00 00 00 00 -T 37 05 00 DD 36 FD 00 +T B9 07 00 DD 36 FB 00 R 00 00 00 00 -T 3B 05 00 +T BD 07 00 R 00 00 00 00 -T 3B 05 00 DD 7E FD D6 08 D2 D0 05 DD 7E FD D3 DE +T BD 07 00 DD 7E FB D6 08 D2 5F 08 DD 7E FB D3 DE R 00 00 00 00 00 09 00 00 -T 48 05 00 DD 7E FD 87 87 87 87 DD 77 FA DD 36 F9 +T CA 07 00 DD 7E FB 87 87 87 87 DD 77 F8 DD 36 F7 R 00 00 00 00 -T 55 05 00 00 DB DD 47 0E 00 DB DC 1E 00 B1 4F 7B +T D7 07 00 00 DB DD 47 AF DB DC 1E 00 2F 4F 78 2F R 00 00 00 00 -T 62 05 00 B0 47 79 2F 4F 78 2F DD 71 FE E6 0F DD +T E4 07 00 47 DD 71 FC 78 E6 0F DD 77 FD DD 36 FE R 00 00 00 00 -T 6F 05 00 77 FF 01 00 08 DD 56 F8 +T F1 07 00 00 DD 36 FF 08 DD 4E F6 R 00 00 00 00 -T 77 05 00 +T F9 07 00 R 00 00 00 00 -T 77 05 00 DD 7E FF DD B6 FE 28 4B DD 7E FE A1 5F +T F9 07 00 DD 7E FD DD B6 FC 28 58 DD 7E FC DD A6 R 00 00 00 00 -T 84 05 00 DD 7E FF A0 B3 28 39 7A DD 96 04 30 20 +T 06 08 00 FE 47 DD 7E FD DD A6 FF B0 28 3E 79 DD R 00 00 00 00 -T 91 05 00 6A 14 DD 72 F8 26 00 29 7D DD 86 FB 6F +T 13 08 00 96 04 30 21 69 0C DD 71 F6 26 00 29 DD R 00 00 00 00 -T 9E 05 00 7C DD 8E FC 67 DD 7E F9 81 5F DD 7E FA +T 20 08 00 5E F9 DD 56 FA 19 DD 7E F7 DD 86 FE 5F R 00 00 00 00 -T AB 05 00 88 73 23 77 18 05 +T 2D 08 00 DD 7E F8 DD 8E FF 73 23 77 18 05 R 00 00 00 00 -T B1 05 00 +T 38 08 00 R 00 00 00 00 -T B1 05 00 DD 7E F8 18 1D +T 38 08 00 DD 7E F6 18 25 R 00 00 00 00 -T B6 05 00 +T 3D 08 00 R 00 00 00 00 -T B6 05 00 DD 7E FE 91 DD 77 FE DD 7E FF 98 DD 77 +T 3D 08 00 DD 7E FC DD 96 FE DD 77 FC DD 7E FD DD R 00 00 00 00 -T C3 05 00 FF +T 4A 08 00 9E FF DD 77 FD R 00 00 00 00 -T C4 05 00 +T 4F 08 00 R 00 00 00 00 -T C4 05 00 CB 38 CB 19 18 AD +T 4F 08 00 DD CB FF 3E DD CB FE 1E 18 A0 R 00 00 00 00 -T CA 05 00 +T 59 08 00 R 00 00 00 00 -T CA 05 00 DD 34 FD C3 3B 05 +T 59 08 00 DD 34 FB C3 BD 07 R 00 00 00 00 00 07 00 00 -T D0 05 00 +T 5F 08 00 R 00 00 00 00 -T D0 05 00 DD 7E F8 +T 5F 08 00 DD 7E F6 R 00 00 00 00 -T D3 05 00 +T 62 08 00 R 00 00 00 00 -T D3 05 00 DD F9 DD E1 E1 33 E9 +T 62 08 00 DD F9 DD E1 E1 33 E9 R 00 00 00 00 -T DA 05 00 +T 69 08 00 R 00 00 00 00 -T DA 05 00 3E 80 +T 69 08 00 3E 80 R 00 00 00 00 -T DC 05 00 +T 6B 08 00 R 00 00 00 00 -T DC 05 00 ED A0 +T 6B 08 00 ED A0 R 00 00 00 00 -T DE 05 00 +T 6D 08 00 R 00 00 00 00 -T DE 05 00 87 CC 2E 06 30 F8 D5 01 01 00 50 +T 6D 08 00 87 CC BD 08 30 F8 D5 01 01 00 50 R 00 00 00 00 00 05 00 00 -T E9 05 00 +T 78 08 00 R 00 00 00 00 -T E9 05 00 14 87 CC 2E 06 30 F9 C3 FD 05 +T 78 08 00 14 87 CC BD 08 30 F9 C3 8C 08 R 00 00 00 00 00 06 00 00 00 0B 00 00 -T F3 05 00 +T 82 08 00 R 00 00 00 00 -T F3 05 00 87 CC 2E 06 CB 11 CB 10 38 2D +T 82 08 00 87 CC BD 08 CB 11 CB 10 38 2D R 00 00 00 00 00 05 00 00 -T FD 05 00 +T 8C 08 00 R 00 00 00 00 -T FD 05 00 15 20 F3 03 5E 23 CB 33 30 1A 87 CC +T 8C 08 00 15 20 F3 03 5E 23 CB 33 30 1A 87 CC R 00 00 00 00 -T 09 06 00 2E 06 CB 12 87 CC 2E 06 CB 12 87 CC +T 98 08 00 BD 08 CB 12 87 CC BD 08 CB 12 87 CC R 00 00 00 00 00 03 00 00 00 09 00 00 -T 15 06 00 2E 06 CB 12 87 CC 2E 06 3F 38 01 14 +T A4 08 00 BD 08 CB 12 87 CC BD 08 3F 38 01 14 R 00 00 00 00 00 03 00 00 00 09 00 00 -T 21 06 00 +T B0 08 00 R 00 00 00 00 -T 21 06 00 CB 1B E3 E5 ED 52 D1 ED B0 +T B0 08 00 CB 1B E3 E5 ED 52 D1 ED B0 R 00 00 00 00 -T 2A 06 00 +T B9 08 00 R 00 00 00 00 -T 2A 06 00 E1 D2 DE 05 +T B9 08 00 E1 D2 6D 08 R 00 00 00 00 00 05 00 00 -T 2E 06 00 +T BD 08 00 R 00 00 00 00 -T 2E 06 00 7E 23 17 C9 +T BD 08 00 7E 23 17 C9 R 00 00 00 00 -T 32 06 00 +T C1 08 00 R 00 00 00 00 -T 32 06 00 0E BF CB F2 F3 ED 59 ED 51 FB CB B2 0D +T C1 08 00 0E BF CB F2 F3 ED 59 ED 51 FB CB B2 0D R 00 00 00 00 -T 3F 06 00 3E 80 +T CE 08 00 3E 80 R 00 00 00 00 -T 41 06 00 +T D0 08 00 R 00 00 00 00 -T 41 06 00 ED A3 13 +T D0 08 00 ED A3 13 R 00 00 00 00 -T 44 06 00 +T D3 08 00 R 00 00 00 00 -T 44 06 00 CD B3 06 30 F8 D5 01 00 00 50 +T D3 08 00 CD 42 09 30 F8 D5 01 00 00 50 R 00 00 00 00 00 04 00 00 -T 4E 06 00 +T DD 08 00 R 00 00 00 00 -T 4E 06 00 14 CD B3 06 30 FA +T DD 08 00 14 CD 42 09 30 FA R 00 00 00 00 00 05 00 00 -T 54 06 00 +T E3 08 00 R 00 00 00 00 -T 54 06 00 D4 B3 06 CB 11 CB 10 DA B9 06 15 20 F3 +T E3 08 00 D4 42 09 CB 11 CB 10 DA 48 09 15 20 F3 R 00 00 00 00 00 04 00 00 00 0B 00 00 -T 61 06 00 03 5E 23 CB 23 1C 30 0C 16 10 +T F0 08 00 03 5E 23 CB 23 1C 30 0C 16 10 R 00 00 00 00 -T 6B 06 00 +T FA 08 00 R 00 00 00 00 -T 6B 06 00 CD B3 06 CB 12 30 F9 14 CB 3A +T FA 08 00 CD 42 09 CB 12 30 F9 14 CB 3A R 00 00 00 00 00 04 00 00 -T 75 06 00 +T 04 09 00 R 00 00 00 00 -T 75 06 00 CB 1B E3 E5 ED 52 D1 F5 CB F2 0B 04 0C +T 04 09 00 CB 1B E3 E5 ED 52 D1 F5 CB F2 0B 04 0C R 00 00 00 00 -T 82 06 00 79 0E BF +T 11 09 00 79 0E BF R 00 00 00 00 -T 85 06 00 +T 14 09 00 R 00 00 00 00 -T 85 06 00 C5 47 +T 14 09 00 C5 47 R 00 00 00 00 -T 87 06 00 +T 16 09 00 R 00 00 00 00 -T 87 06 00 00 F3 ED 69 ED 61 FB 23 AF C0 00 00 DB +T 16 09 00 00 F3 ED 69 ED 61 FB 23 AF C0 00 00 DB R 00 00 00 00 -T 94 06 00 BE 00 00 00 00 00 00 F3 ED 59 ED 51 FB +T 23 09 00 BE 00 00 00 00 00 00 F3 ED 59 ED 51 FB R 00 00 00 00 -T A1 06 00 D3 BE 13 10 E1 78 C1 10 DB 48 CB B2 F1 +T 30 09 00 D3 BE 13 10 E1 78 C1 10 DB 48 CB B2 F1 R 00 00 00 00 -T AE 06 00 0E BE E1 30 91 +T 3D 09 00 0E BE E1 30 91 R 00 00 00 00 -T B3 06 00 +T 42 09 00 R 00 00 00 00 -T B3 06 00 87 C0 7E 23 17 C9 +T 42 09 00 87 C0 7E 23 17 C9 R 00 00 00 00 -T B9 06 00 +T 48 09 00 R 00 00 00 00 -T B9 06 00 E1 C9 +T 48 09 00 E1 C9 R 00 00 00 00 -T BB 06 00 +T 4A 09 00 R 00 00 00 00 -T BB 06 00 DD E5 DD 21 00 00 DD 39 F3 7D D3 BF 7C +T 4A 09 00 DD E5 DD 21 00 00 DD 39 7D F3 D3 BF 7C R 00 00 00 00 -T C8 06 00 F6 40 D3 BF FB DD 4E 04 DD 46 05 +T 57 09 00 F6 40 D3 BF FB DD 4E 04 DD 46 05 R 00 00 00 00 -T D3 06 00 +T 62 09 00 R 00 00 00 00 -T D3 06 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 +T 62 09 00 1A D3 BE 13 0B 78 B1 20 F7 DD E1 E1 F1 R 00 00 00 00 -T E0 06 00 E9 +T 6F 09 00 E9 R 00 00 00 00 -T E1 06 00 +T 70 09 00 R 00 00 00 00 -T E1 06 00 F3 7D D3 BF 7C F6 40 D3 BF FB FD 21 +T 70 09 00 7D F3 D3 BF 7C F6 40 D3 BF FB FD 21 R 00 00 00 00 -T ED 06 00 02 00 FD 39 FD 4E 00 +T 7C 09 00 02 00 FD 39 FD 46 00 R 00 00 00 00 -T F4 06 00 +T 83 09 00 R 00 00 00 00 -T F4 06 00 1A D3 BE 13 0D 79 B7 20 F7 E1 33 E9 +T 83 09 00 1A D3 BE 13 10 FA E1 33 E9 R 00 00 00 00 -T 00 07 00 +T 8C 09 00 R 00 00 00 00 -T 00 07 00 F3 7D D3 BF 7C F6 40 D3 BF FB FD 21 +T 8C 09 00 7D F3 D3 BF 7C F6 40 D3 BF FB FD 21 R 00 00 00 00 -T 0C 07 00 02 00 FD 39 FD 4E 00 FD 5E 01 FD 56 02 +T 98 09 00 02 00 FD 39 FD 4E 00 FD 5E 01 FD 56 02 R 00 00 00 00 -T 19 07 00 FD 23 +T A5 09 00 FD 23 R 00 00 00 00 -T 1B 07 00 +T A7 09 00 R 00 00 00 00 -T 1B 07 00 7A B3 28 06 79 D3 BE 1B 18 F6 +T A7 09 00 7A B3 28 06 79 D3 BE 1B 18 F6 R 00 00 00 00 -T 25 07 00 +T B1 09 00 R 00 00 00 00 -T 25 07 00 E1 F1 33 E9 +T B1 09 00 E1 F1 33 E9 R 00 00 00 00 -T 29 07 00 +T B5 09 00 R 00 00 00 00 -T 29 07 00 F3 7D D3 BF 7C F6 40 D3 BF FB 4A FD 21 +T B5 09 00 7D 4B 42 F3 D3 BF 7C F6 40 D3 BF FB 58 R 00 00 00 00 -T 36 07 00 02 00 FD 39 FD 6E 00 FD 66 01 +T C2 09 00 FD 21 02 00 FD 39 FD 6E 00 FD 66 01 R 00 00 00 00 -T 40 07 00 +T CE 09 00 R 00 00 00 00 -T 40 07 00 7C B5 28 0D 7B D3 BE 00 00 00 2B 2B 79 +T CE 09 00 7C B5 28 0D 79 D3 BE 00 00 00 2B 2B 7B R 00 00 00 00 -T 4D 07 00 D3 BE 18 EF +T DB 09 00 D3 BE 18 EF R 00 00 00 00 -T 51 07 00 +T DF 09 00 R 00 00 00 00 -T 51 07 00 E1 F1 E9 +T DF 09 00 E1 F1 E9 R 00 00 00 00 -T 54 07 00 +T E2 09 00 R 00 00 00 00 -T 54 07 00 22 8F 00 C9 +T E2 09 00 22 8F 00 C9 R 00 00 00 00 00 04 01 00 -T 58 07 00 +T E6 09 00 R 00 00 00 00 -T 58 07 00 F5 C5 D5 E5 FD E5 DD E5 DD 21 00 00 DD +T E6 09 00 F5 C5 D5 E5 FD E5 DD E5 DD 21 00 00 DD R 00 00 00 00 -T 65 07 00 39 3B DB BF DD 77 FF 07 30 35 21 00 00 +T F3 09 00 39 3B DB BF DD 77 FF 07 30 30 21 00 00 R 00 00 00 00 00 0E 01 00 -T 72 07 00 36 01 2A 02 00 22 04 00 DB DD 47 0E 00 +T 00 0A 00 36 01 2A 02 00 22 04 00 DB DD 47 AF 0E R 00 00 00 00 00 06 01 00 00 09 01 00 -T 7F 07 00 DB DC 1E 00 B1 F5 7B B0 4F F1 2F 32 -R 00 00 00 00 -T 8B 07 00 02 00 79 2F 32 03 00 3A 90 00 FD 21 -R 00 00 00 00 00 03 01 00 00 08 01 00 00 0B 01 00 -T 97 07 00 8F 00 FD B6 00 28 06 2A 8F 00 CD 00 00 -R 00 00 00 00 00 03 01 00 00 0B 01 00 02 0E 06 00 -T A4 07 00 +T 0D 0A 00 00 DB DC 1E 00 2F 32 02 00 78 2F 32 +R 00 00 00 00 00 0A 01 00 +T 19 0A 00 03 00 3A 90 00 FD 21 8F 00 FD B6 00 28 +R 00 00 00 00 00 03 01 00 00 06 01 00 00 0A 01 00 +T 26 0A 00 06 2A 8F 00 CD 00 00 +R 00 00 00 00 00 05 01 00 02 08 06 00 +T 2D 0A 00 R 00 00 00 00 -T A4 07 00 FB 33 DD E1 FD E1 E1 D1 C1 F1 FB ED 4D +T 2D 0A 00 FB 33 DD E1 FD E1 E1 D1 C1 F1 FB ED 4D R 00 00 00 00 -T B1 07 00 +T 3A 0A 00 R 00 00 00 00 -T B1 07 00 F5 C5 D5 E5 FD E5 21 01 00 36 01 FD E1 +T 3A 0A 00 F5 C5 D5 E5 FD E5 21 01 00 36 01 FD E1 R 00 00 00 00 00 0A 01 00 -T BE 07 00 E1 D1 C1 F1 ED 45 +T 47 0A 00 E1 D1 C1 F1 ED 45 R 00 00 00 00 T 00 00 00 R 00 00 07 00 diff --git a/SGlib/src/SGlib.c b/SGlib/src/SGlib.c index ab3a248..4f1303c 100644 --- a/SGlib/src/SGlib.c +++ b/SGlib/src/SGlib.c @@ -145,6 +145,8 @@ inline void SG_set_address_VRAM (unsigned int address) { } #endif +#define SG_get_Tile_address(x,y) (unsigned int)(((y)>>3) << 8) + (((x) >> 3) << 3) + ((y) % 8) + inline void SG_byte_to_VDP_data (unsigned char data) { /* INTERNAL FUNCTION */ VDPDataPort = data; @@ -252,6 +254,56 @@ unsigned char SG_getTile (void) { return(SG_byte_from_VDP_data()); } +void SG_initBMPmode (unsigned char bg_color, unsigned char fg_color) { + unsigned char color_data=((fg_color & 0x0F) << 4) + (bg_color & 0x0F); + unsigned int tileno=0; + + for (unsigned char y=0; y != SG_MAX_TILE_RES_Y; ++y) { + for (unsigned char x=0; x != SG_MAX_TILE_RES_X; ++x) { + SG_set_address_VRAM (CGTADDRESS + SG_get_Tile_address(x << 3, y << 3)); + for(unsigned char t=8; t != 0; --t) { + VDPDataPort = color_data; + } + SG_setTileatXY(x, y, tileno++); + } + } +} + +void SG_setPixel (unsigned char x, unsigned char y, unsigned char color) { + unsigned char data=(0x80 >> (x % 8)); + unsigned int address=SG_get_Tile_address(x, y); + _Bool fg_color=(color <= 0x10); + + //set pattern data + SG_set_address_VRAM_read (PGTADDRESS + address); + WAIT_VRAM; + if (fg_color) { + data |= VDPDataPort; + } else { + data = VDPDataPort & (~data); + } + SG_set_address_VRAM (PGTADDRESS + address); + VDPDataPort = data; + + //set color data if requested + if (!(color & NO_COLOR_UPDATE)) { + color &= 0x0F; + SG_set_address_VRAM_read (CGTADDRESS + address); + WAIT_VRAM; + data = VDPDataPort; + + // coloring foreground or background + if (fg_color) { + data = (data & 0x0F) | (color << 4); + } else { + data = (data & 0xF0) | color; + } + + SG_set_address_VRAM (CGTADDRESS + address); + VDPDataPort = data; + } +} + void SG_loadTileMap (unsigned char x, unsigned char y, void *src, unsigned int size) { SG_set_address_VRAM (PNTADDRESS + (y << 5) + x); SG_byte_array_to_VDP_data (src, size); diff --git a/SGlib/src/SGlib.h b/SGlib/src/SGlib.h index db73163..b4abcfd 100644 --- a/SGlib/src/SGlib.h +++ b/SGlib/src/SGlib.h @@ -46,6 +46,12 @@ void SG_setBackdropColor (unsigned char entry); #define SG_COLOR_GRAY 0x0E #define SG_COLOR_WHITE 0x0F +// screen numbers +#define SG_MAX_SCREEN_RES_X (256) +#define SG_MAX_SCREEN_RES_Y (192) +#define SG_MAX_TILE_RES_X (SG_MAX_SCREEN_RES_X >> 3) +#define SG_MAX_TILE_RES_Y (SG_MAX_SCREEN_RES_Y >> 3) + /* wait until next VBlank starts */ void SG_waitForVBlank (void); @@ -94,6 +100,12 @@ unsigned char SG_getTile (void); #define SG_setTileatXY(x,y,tile) do{SG_setNextTileatXY((x),(y));SG_setTile(tile);}while(0) #define SG_getTileatXY(x,y) (SG_getNextTileatXY((x),(y)),SG_getTile()) +/* functions for fake bitmap mode */ +void SG_initBMPmode (unsigned char background_color, unsigned char foreground_color); +void SG_setPixel (unsigned char x, unsigned char y, unsigned char color); +#define NO_COLOR_UPDATE 0x10 +#define SG_BgColor(x) (x | 0x80) + /* functions for sprites handling */ void SG_initSprites (void); _Bool SG_addSprite (unsigned char x, unsigned char y, unsigned char tile, unsigned char attr); /* returns false if no more sprites are available */ diff --git a/examples/nikolaus_sg/Makefile b/examples/nikolaus_sg/Makefile new file mode 100644 index 0000000..99aad38 --- /dev/null +++ b/examples/nikolaus_sg/Makefile @@ -0,0 +1,42 @@ +CC=sdcc +IHX2SMS=ihx2sms +DEVKITSMS_BASE=../../ +SGLIB_BASE=$(DEVKITSMS_BASE)SGlib +SGLIB_INCDIR=$(SGLIB_BASE)/src +PEEP_RULES=$(SGLIB_BASE)/src/peep-rules.txt +CRT0=$(DEVKITSMS_BASE)/crt0/crt0_sg.rel +SGLIB_LIB=$(SGLIB_BASE)/SGlib.rel # Use distributed lib +#SMSLIB_LIB=$(SMSLIB_BASE)/src/SMSlib.lib # Use locally compiled lib + +CFLAGS=-mz80 -I$(SGLIB_INCDIR) --peep-file $(PEEP_RULES) +LDFLAGS=-mz80 --no-std-crt0 --data-loc 0xC000 + +PROGNAME=putpixel + +OBJS=putpixel.rel + +all: $(PROGNAME).sg + +%.rel: %.c + $(CC) $(CFLAGS) -c $< + +%.rel: %.c %.h + $(CC) $(CFLAGS) -c $< + +$(PROGNAME).ihx: $(OBJS) + $(CC) -o $@ $(LDFLAGS) $(CRT0) $(SGLIB_LIB) $^ + +$(PROGNAME).sg: $(PROGNAME).ihx + $(IHX2SMS) $< $@ + +clean: +ifeq ($(OS),Windows_NT) + del /Q *.rel *.ihx *.asm *.sym *.lst *.noi *.lk *.map *.sms *.gg *.sc *.sg +else + rm -f *.rel *.ihx *.asm *.sym *.lst *.noi *.lk *.map *.sms *.gg *.sc *.sg +endif +# When a linking error occurs, sdcc returns an error and make fails. However +# a .ihx output file still gets created. This leads to make thinking that the .ihx +# file is up to date the next time it runs... This forces linking to take place +# every time make is called. +.PHONY: $(PROGNAME).ihx diff --git a/examples/nikolaus_sg/putpixel.c b/examples/nikolaus_sg/putpixel.c new file mode 100644 index 0000000..02725fb --- /dev/null +++ b/examples/nikolaus_sg/putpixel.c @@ -0,0 +1,114 @@ +#include "SGlib.h" + +void bresenham(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char color) { + int dx = x2 - x1; + int dy = y2 - y1; + + int x = x1; + int y = y1; + + int dx1 = (dx < 0) ? -dx : dx; + int dy1 = (dy < 0) ? -dy : dy; + int px = (dy1 << 1) - dx1; + int py = (dx1 << 1) - dy1; + + int xEnd, yEnd; + + if (dy1 <= dx1) { + int twoDy = dy1 << 1; + int twoDyDx = (dy1 - dx1) << 1; + int p = (dy1 << 1) - dx1; + + if (x1 > x2) { + x = x2; + y = y2; + xEnd = x1; + } else { + x = x1; + y = y1; + xEnd = x2; + } + + SG_setPixel(x, y, color); + + while (x < xEnd) { + x++; + if (p < 0) { + p += twoDy; + } else { + y += (dy < 0) ? -1 : 1; + p += twoDyDx; + } + SG_setPixel(x, y, color); + } + } else { + int twoDx = dx1 << 1; + int twoDxDy = (dx1 - dy1) << 1; + int p = (dx1 << 1) - dy1; + + if (y1 > y2) { + x = x2; + y = y2; + yEnd = y1; + } else { + x = x1; + y = y1; + yEnd = y2; + } + + SG_setPixel(x, y, color); + + while (y < yEnd) { + y++; + if (p < 0) { + p += twoDx; + } else { + x += (dx < 0) ? -1 : 1; + p += twoDxDy; + } + SG_setPixel(x, y, color); + } + } +} + +void line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned color) { + + if (x1 > x2) { + unsigned char temp; + temp =x1; + x1 = x2; + x2 = temp; + temp = y1; + y1 = y2; + y2 = temp; + } + bresenham(x1, y1, x2, y2, color); +} + + +unsigned char color(unsigned char color, _Bool bgmode) { + + return bgmode ? SG_BgColor(color) : color; +} + +void draw_house(unsigned char x_offset, unsigned char y_offset, _Bool extra_color, _Bool bgmode) { + + line(50+x_offset, 100+y_offset, 100+x_offset, 100+y_offset, color((extra_color ? 2 : NO_COLOR_UPDATE), bgmode)); + line(100+x_offset, 100+y_offset, 100+x_offset, 50+y_offset, color((extra_color ? 3 : NO_COLOR_UPDATE), bgmode)); + line(100+x_offset, 50+y_offset, 50+x_offset, 50+y_offset, color((extra_color ? 4 : NO_COLOR_UPDATE), bgmode)); + line(50+x_offset, 50+y_offset, 75+x_offset, 25+y_offset, color((extra_color ? 5 : NO_COLOR_UPDATE), bgmode)); + line(75+x_offset, 25+y_offset, 100+x_offset, 50+y_offset, color((extra_color ? 6 : NO_COLOR_UPDATE), bgmode)); + line(100+x_offset, 50+y_offset, 50+x_offset, 100+y_offset, color((extra_color ? 7 : NO_COLOR_UPDATE), bgmode)); + line(50+x_offset, 100+y_offset, 50+x_offset, 50+y_offset, color((extra_color ? 8 : NO_COLOR_UPDATE), bgmode)); + line(50+x_offset, 50+y_offset, 100+x_offset, 100+y_offset, color((extra_color ? 9 : NO_COLOR_UPDATE), bgmode)); +} + +void main(void) { + SG_initBMPmode(SG_COLOR_WHITE, SG_COLOR_LIGHT_GREEN); + SG_displayOn(); + + draw_house(0, 0, 1, 0); + draw_house(75, 75, 0, 0); + draw_house(75, 0, 1, 1); + while(1) SG_waitForVBlank(); +} \ No newline at end of file diff --git a/examples/nikolaus_sg/screenshot/putpixel.png b/examples/nikolaus_sg/screenshot/putpixel.png new file mode 100644 index 0000000..a972ee6 Binary files /dev/null and b/examples/nikolaus_sg/screenshot/putpixel.png differ