「地形データ」の編集履歴(バックアップ)一覧に戻る

地形データ - (2008/11/01 (土) 16:32:14) のソース

** 圧縮形式

RAREWARE の SFC ソフトに使用されている圧縮形式です.
今のところ,
・スーパードンキーコング 2 
・スーパードンキーコング 3
・KILLER INSTINCT 
などで確認しています.
 
 - ヘッダ部分
 
 Byte[00]	  : - 未使用 - (前の圧縮データの終端のようです)
 Byte[01]	  : 8bit 出現率 No.1(?)
 Byte[02]	  : 8bit 出現率 No.2(?)
 Byte[03]	  : 8bit 出現率 多
 Byte[04]   : 8bit 出現率 多
 Byte[05-06]: 16bit 出現率 No.1(?)
 Byte[07-26]: 16bit 出現率 No.2~No.17(?)
 Byte[27-]  : 圧縮データ
 
 - 圧縮コード
 
 全て 4bit 単位で処理されていて, 頻繁に 4bit ずれます.
 (4bitずれた時は別のプログラムで処理していますが, 内容は同じです)
 
 [0x_]	: ROM から x バイトコピー, [00]の場合は伸張処理終了
 [1xx]	: xx を入力する.
 [2xxyy]	: yyxx を入力する.
 [3xyy]	: yy を (x+3) 回入力する.
 [4x]	: Byte[01] ( 8bit) を (x+3) 回入力する.
 [5x]	: Byte[02] ( 8bit) を (x+3) 回入力する.
 [6]	: Byte[05] (16bit) を入力する.
 [7]	: Byte[03] ( 8bit) を入力する.
 [8]	: Byte[04] ( 8bit) を入力する.
 [9x]	: (x+2) バイト前から 2 バイトコピー
 [Axyy]	: {(x+3)+yy} バイト前から (x+3) バイトコピー
 [Bxyyz]	: (yyz + 103h) バイト前から (x+3) バイトコピー
 [Cxyyzz]	: yyzz(BigEndian) バイト前から (x+3) バイトコピー
 [D]	: 1 バイト前から 1 バイトコピー
 [E]	: 2 バイト前から 2 バイトコピー
 [Fx]	: Byte[07+2x](16bit) を 書き込む

** ソース

 ;------------------------------------------------
 ; 圧縮コード JMP 先
 ;------------------------------------------------
 $BB/8001 4C 2A 8E    JMP $8E2A  [$7F:8E2A]      ; 圧縮コード[0x]
 $BB/8005 4C 96 8E    JMP $8E96  [$7F:8E96]      ; 圧縮コード[1x]
 $BB/8009 4C B4 8E    JMP $8EB4  [$7F:8EB4]      ; 圧縮コード[2x]
 $BB/800D 4C EB 8E    JMP $8EEB  [$7F:8EEB]      ; 圧縮コード[3x]
 $BB/8011 4C 26 8F    JMP $8F26  [$7F:8F26]      ; 圧縮コード[4x]
 $BB/8015 4C 53 8F    JMP $8F53  [$7F:8F53]      ; 圧縮コード[5x]
 $BB/8019 4C 80 8F    JMP $8F80  [$7F:8F80]      ; 圧縮コード[6x]
 $BB/801D 4C 9C 8F    JMP $8F9C  [$7F:8F9C]      ; 圧縮コード[7x]
 $BB/8021 4C AE 8F    JMP $8FAE  [$7F:8FAE]      ; 圧縮コード[8x]
 $BB/8025 4C C0 8F    JMP $8FC0  [$7F:8FC0]      ; 圧縮コード[9x]
 $BB/8029 4C FF 8F    JMP $8FFF  [$7F:8FFF]      ; 圧縮コード[Ax]
 $BB/802D 4C 62 90    JMP $9062  [$7F:9062]      ; 圧縮コード[Bx]
 $BB/8031 4C C9 90    JMP $90C9  [$7F:90C9]      ; 圧縮コード[Cx]
 $BB/8035 4C 38 91    JMP $9138  [$7F:9138]      ; 圧縮コード[Dx]
 $BB/8039 4C 50 91    JMP $9150  [$7F:9150]      ; 圧縮コード[Ex]
 $BB/803D 4C 76 91    JMP $9176  [$7F:9176]      ; 圧縮コード[Fx]
 ;------------------------------------------------
 ; サブ圧縮コード JMP 先
 ;------------------------------------------------
 $BB/8040 4C 6F 8E    JMP $8E6F  [$7F:8E6F]      ; サブ圧縮コード[00]
 $BB/8044 4C AA 8E    JMP $8EAA  [$7F:8EAA]      ; サブ圧縮コード[01]
 $BB/8048 4C DB 8E    JMP $8EDB  [$7F:8EDB]      ; サブ圧縮コード[02]
 $BB/804C 4C 01 8F    JMP $8F01  [$7F:8F01]      ; サブ圧縮コード[03]
 $BB/8050 4C 3B 8F    JMP $8F3B  [$7F:8F3B]      ; サブ圧縮コード[04]
 $BB/8054 4C 68 8F    JMP $8F68  [$7F:8F68]      ; サブ圧縮コード[05]
 $BB/8058 4C 8E 8F    JMP $8F8E  [$7F:8F8E]      ; サブ圧縮コード[06]
 $BB/805C 4C A5 8F    JMP $8FA5  [$7F:8FA5]      ; サブ圧縮コード[07]
 $BB/8060 4C B7 8F    JMP $8FB7  [$7F:8FB7]      ; サブ圧縮コード[08]
 $BB/8064 4C DE 8F    JMP $8FDE  [$7F:8FDE]      ; サブ圧縮コード[09]
 $BB/8068 4C 29 90    JMP $9029  [$7F:9029]      ; サブ圧縮コード[0A]
 $BB/806C 4C 97 90    JMP $9097  [$7F:9097]      ; サブ圧縮コード[0B]
 $BB/8070 4C F2 90    JMP $90F2  [$7F:90F2]      ; サブ圧縮コード[0C]
 $BB/8074 4C 44 91    JMP $9144  [$7F:9144]      ; サブ圧縮コード[0D]
 $BB/8078 4C 63 91    JMP $9163  [$7F:9163]      ; サブ圧縮コード[0E]
 $BB/807C 4C 90 91    JMP $9190  [$7F:9190]      ; サブ圧縮コード[0F]
 ;------------------------------------------------
 ; 伸張処理開始
 ;------------------------------------------------
 $BB/8D91 85 38       STA $38    [$00:0038]      ;
 $BB/8D93 A9 7F 00    LDA #$007F                 ;
 $BB/8D96 85 3A       STA $3A    [$00:003A]      ;
 $BB/8D98 86 34       STX $34    [$00:0034]      ;
 $BB/8D9A 84 36       STY $36    [$00:0036]      ;
 $BB/8D9C 80 10       BRA $10    [$8DAE]         ;
 ;
 $BB/8D9E 8A          TXA                        ;
 $BB/8D9F BB          TYX                        ;
 $BB/8DA0 85 34       STA $34    [$00:0034]      ; $34 : 参照アドレス
 $BB/8DA2 86 36       STX $36    [$00:0036]      ;
 $BB/8DA4 A9 00 00    LDA #$0000                 ;
 $BB/8DA7 85 38       STA $38    [$00:0038]      ;
 $BB/8DA9 A9 7F 00    LDA #$007F                 ;
 $BB/8DAC 85 3A       STA $3A    [$00:003A]      ; $38 : 伸張先アドレス
 ;
 $BB/8DAE A9 FF FF    LDA #$FFFF                 ;
 $BB/8DB1 85 32       STA $32    [$00:0032]      ; $32 : #$FFFF
 $BB/8DB3 8B          PHB                        ;
 $BB/8DB4 5A          PHY                        ;
 $BB/8DB5 A9 00 21    LDA #$2100                 ;
 $BB/8DB8 85 46       STA $46    [$00:0046]      ;
 $BB/8DBA A9 7E 00    LDA #$007E                 ;
 $BB/8DBD 85 48       STA $48    [$00:0048]      ; $46 : #$7E2100
 $BB/8DBF 85 44       STA $44    [$00:0044]      ;
 $BB/8DC1 A9 00 20    LDA #$2000                 ;
 $BB/8DC4 85 42       STA $42    [$00:0042]      ; $42 : #$7E2000
 $BB/8DC6 22 AF 91 BB JSL $BB91AF[$BB:91AF]      ; (伸張処理高速化用)
 $BB/8DCA A6 38       LDX $38    [$00:0038]      ;
 $BB/8DCC A0 01 00    LDY #$0001                 ;
 $BB/8DCF A9 01 80    LDA #$8001                 ;
 $BB/8DD2 85 4E       STA $4E    [$00:004E]      ; $4E : #$8001
 $BB/8DD4 A9 40 80    LDA #$8040                 ;
 $BB/8DD7 85 4A       STA $4A    [$00:004A]      ; $4A : #$8040
 $BB/8DD9 E2 20       SEP #$20                   ;
 $BB/8DDB A5 3A       LDA $3A    [$00:003A]      ;
 $BB/8DDD 48          PHA                        ;
 $BB/8DDE AB          PLB                        ;
 $BB/8DDF B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA : Byte[0x01]
 $BB/8DE1 85 52       STA $52    [$00:0052]      ; $52 = Byte[0x01]
 $BB/8DE3 C8          INY                        ;
 $BB/8DE4 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA : Byte[0x02]
 $BB/8DE6 85 53       STA $53    [$00:0053]      ; $53 = Byte[0x02]
 $BB/8DE8 C8          INY                        ;
 $BB/8DE9 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA : Byte[0x03]
 $BB/8DEB 85 56       STA $56    [$00:0056]      ; $56 = Byte[0x03]
 $BB/8DED C8          INY                        ;
 $BB/8DEE B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA : Byte[0x04]
 $BB/8DF0 85 57       STA $57    [$00:0057]      ; $57 = Byte[0x04]
 $BB/8DF2 C8          INY                        ;
 $BB/8DF3 C2 20       REP #$20                   ;
 $BB/8DF5 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA : Byte[0x05-0x06]
 $BB/8DF7 85 54       STA $54    [$00:0054]      ; $54 = Byte[0x05-0x06]
 $BB/8DF9 A0 27 00    LDY #$0027                 ;
 $BB/8DFC 64 3C       STZ $3C    [$00:003C]      ;
 $BB/8DFE 64 3E       STZ $3E    [$00:003E]      ;
 $BB/8E00 E2 20       SEP #$20                   ;
 ;
 $BB/8E02 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA : Byte[0x27~]
 $BB/8E04 C8          INY                        ;
 $BB/8E05 85 46       STA $46    [$00:0046]      ;
 $BB/8E07 29 F0       AND #$F0                   ;
 $BB/8E09 4A          LSR A                      ;
 $BB/8E0A 4A          LSR A                      ;
 $BB/8E0B 85 4E       STA $4E    [$00:004E]      ;
 $BB/8E0D D4 4E       PEI $4E                    ; PUSH $4E
 $BB/8E0F 60          RTS                        ; JMP $4E+1
 ;------------------------------------------------
 ; サブ圧縮コードへのジャンプ : $46 依存
 ;------------------------------------------------
 $BB/8E10 A5 46       LDA $46    [$00:0046]      ;
 $BB/8E12 29 0F       AND #$0F                   ;
 $BB/8E14 0A          ASL A                      ;
 $BB/8E15 0A          ASL A                      ;
 $BB/8E16 69 3F       ADC #$3F                   ;
 $BB/8E18 85 4A       STA $4A    [$00:004A]      ;
 $BB/8E1A D4 4A       PEI $4A                    ; PUSH $4A
 $BB/8E1C 60          RTS                        ; JMP $4A+1
 ;------------------------------------------------
 ; サブ圧縮コードへのジャンプ : $42 依存
 ;------------------------------------------------
 $BB/8E1D A5 42       LDA $42    [$00:0042]      ;
 $BB/8E1F 29 0F       AND #$0F                   ;
 $BB/8E21 0A          ASL A                      ;
 $BB/8E22 0A          ASL A                      ;
 $BB/8E23 69 3F       ADC #$3F                   ;
 $BB/8E25 85 4A       STA $4A    [$00:004A]      ;
 $BB/8E27 D4 4A       PEI $4A                    ; PUSH $4A
 $BB/8E29 60          RTS                        ; JMP $4A+1
 ;------------------------------------------------
 ; 圧縮コード[0x] ; ROMから x バイトコピー, [00]の場合は伸張処理終了
 ;------------------------------------------------
 $BB/8E2A A5 46       LDA $46    [$00:0046]      ;
 $BB/8E2C 29 0F       AND #$0F                   ;
 $BB/8E2E F0 10       BEQ $10    [$8E40]         ;
 $BB/8E30 85 3C       STA $3C    [$00:003C]      ;
 ;
 $BB/8E32 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8E34 C8          INY                        ;
 $BB/8E35 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8E38 E8          INX                        ;
 $BB/8E39 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8E3B D0 F5       BNE $F5    [$8E32]         ;
 $BB/8E3D 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ;
 ;------------------------------------------------
 $BB/8E40 C2 20       REP #$20                   ;
 $BB/8E42 7A          PLY                        ;
 $BB/8E43 AB          PLB                        ;
 $BB/8E44 8A          TXA                        ;
 $BB/8E45 38          SEC                        ;
 $BB/8E46 E5 38       SBC $38    [$00:0038]      ;
 $BB/8E48 AA          TAX                        ;
 $BB/8E49 A5 32       LDA $32    [$00:0032]      ;
 $BB/8E4B 30 21       BMI $21    [$8E6E]         ;
 $BB/8E4D A5 58       LDA $58    [$00:0058]      ;
 $BB/8E4F 8D 16 21    STA $2116  [$7F:2116]      ;
 $BB/8E52 A5 38       LDA $38    [$00:0038]      ;
 $BB/8E54 8D 02 43    STA $4302  [$7F:4302]      ;
 $BB/8E57 A5 3A       LDA $3A    [$00:003A]      ;
 $BB/8E59 8D 04 43    STA $4304  [$7F:4304]      ;
 $BB/8E5C 8E 05 43    STX $4305  [$7F:4305]      ;
 $BB/8E5F A9 01 18    LDA #$1801                 ;
 $BB/8E62 8D 00 43    STA $4300  [$7F:4300]      ;
 $BB/8E65 E2 20       SEP #$20                   ;
 $BB/8E67 A9 01       LDA #$01                   ;
 $BB/8E69 8D 0B 42    STA $420B  [$7F:420B]      ;
 $BB/8E6C C2 20       REP #$20                   ;
 ;
 $BB/8E6E 6B          RTL                        ;
 ;------------------------------------------------
 ; サブ圧縮コード[_0 xy y~ ~z] ; ROMから x バイトコピー(但し, 4bitずれている)した後,
 ;                             ; サブ圧縮コード[_z]を実行. [_0 0_]の形の場合は伸張処理終了.
 ;------------------------------------------------
 $BB/8E6F B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8E71 C8          INY                        ;
 $BB/8E72 85 42       STA $42    [$00:0042]      ;
 $BB/8E74 85 46       STA $46    [$00:0046]      ;
 $BB/8E76 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8E78 F0 C6       BEQ $C6    [$8E40]         ; -> END
 ;
 $BB/8E7A 85 3C       STA $3C    [$00:003C]      ;
 $BB/8E7C A7 46       LDA [$46]  [$7E:210F]      ; [$46] = *0 ; * = $46 の下位 4bit
 $BB/8E7E 85 3E       STA $3E    [$00:003E]      ;
 $BB/8E80 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8E82 C8          INY                        ;
 $BB/8E83 85 42       STA $42    [$00:0042]      ;
 $BB/8E85 85 46       STA $46    [$00:0046]      ;
 $BB/8E87 A5 3E       LDA $3E    [$00:003E]      ;
 $BB/8E89 07 42       ORA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8E8B 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8E8E E8          INX                        ;
 $BB/8E8F C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8E91 D0 E9       BNE $E9    [$8E7C]         ;
 ;
 $BB/8E93 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ;  圧縮コード[1x xy] ; xx を入力後, サブ圧縮コード[_y]を実行
 ;------------------------------------------------
 $BB/8E96 A7 46       LDA [$46]  [$7E:210F]      ; [$46] = *0 ; * = $46 の下位 4bit
 $BB/8E98 85 3E       STA $3E    [$00:003E]      ;
 $BB/8E9A B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8E9C C8          INY                        ;
 $BB/8E9D 85 42       STA $42    [$00:0042]      ;
 $BB/8E9F A5 3E       LDA $3E    [$00:003E]      ;
 $BB/8EA1 07 42       ORA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8EA3 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8EA6 E8          INX                        ;
 $BB/8EA7 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_1 xx] ; xx を 入力.
 ;------------------------------------------------
 $BB/8EAA B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8EAC C8          INY                        ;
 $BB/8EAD 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8EB0 E8          INX                        ;
 $BB/8EB1 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[2x xy yz] ; xx yy を入力した後, サブ圧縮コード[_z]を実行.
 ;------------------------------------------------
 $BB/8EB4 A7 46       LDA [$46]  [$7E:210F]      ; [$46] = *0 ; * = $46 の下位 4bit
 $BB/8EB6 85 3E       STA $3E    [$00:003E]      ;
 $BB/8EB8 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA 
 $BB/8EBA C8          INY                        ;
 $BB/8EBB 85 42       STA $42    [$00:0042]      ; $42 : 0* 系処理
 $BB/8EBD 85 46       STA $46    [$00:0046]      ; $46 : *0 系処理
 $BB/8EBF A5 3E       LDA $3E    [$00:003E]      ;
 $BB/8EC1 07 42       ORA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8EC3 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8EC6 E8          INX                        ;
 $BB/8EC7 A7 46       LDA [$46]  [$7E:210F]      ; [$46] = *0 ; * = $46 の下位 4bit
 $BB/8EC9 85 3E       STA $3E    [$00:003E]      ;
 $BB/8ECB B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8ECD C8          INY                        ;
 $BB/8ECE 85 42       STA $42    [$00:0042]      ;
 $BB/8ED0 A5 3E       LDA $3E    [$00:003E]      ;
 $BB/8ED2 07 42       ORA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8ED4 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8ED7 E8          INX                        ;
 $BB/8ED8 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_2] : ROMから 2 バイトコピー.
 ;------------------------------------------------
 $BB/8EDB C2 20       REP #$20                   ;
 $BB/8EDD B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8EDF 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8EE2 C8          INY                        ;
 $BB/8EE3 C8          INY                        ;
 $BB/8EE4 E8          INX                        ;
 $BB/8EE5 E8          INX                        ;
 $BB/8EE6 E2 20       SEP #$20                   ;
 $BB/8EE8 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[3x yy] ; yy を (x+3) 回入力.
 ;------------------------------------------------
 $BB/8EEB A5 46       LDA $46    [$00:0046]      ;
 $BB/8EED 29 0F       AND #$0F                   ;
 $BB/8EEF 69 03       ADC #$03                   ;
 $BB/8EF1 85 3C       STA $3C    [$00:003C]      ;
 $BB/8EF3 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8EF5 C8          INY                        ;
 ;
 $BB/8EF6 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8EF9 E8          INX                        ;
 $BB/8EFA C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8EFC D0 F8       BNE $F8    [$8EF6]         ;
 $BB/8EFE 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_3 xy yz] ; yy を (x+3) 回入力後, サブ圧縮コード[_z]を実行.
 ;------------------------------------------------
 $BB/8F01 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8F03 C8          INY                        ;
 $BB/8F04 85 42       STA $42    [$00:0042]      ;
 $BB/8F06 85 46       STA $46    [$00:0046]      ;
 $BB/8F08 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8F0A 69 03       ADC #$03                   ;
 $BB/8F0C 85 3C       STA $3C    [$00:003C]      ;
 $BB/8F0E A7 46       LDA [$46]  [$7E:210F]      ; [$46] = *0 ; * = $46 の下位 4bit
 $BB/8F10 85 3E       STA $3E    [$00:003E]      ;
 $BB/8F12 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8F14 C8          INY                        ;
 $BB/8F15 85 42       STA $42    [$00:0042]      ;
 $BB/8F17 A5 3E       LDA $3E    [$00:003E]      ;
 $BB/8F19 07 42       ORA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8F1B 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F1E E8          INX                        ;
 $BB/8F1F C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8F21 D0 F8       BNE $F8    [$8F1B]         ;
 $BB/8F23 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; 圧縮コード[4x] : (x+3) 回 Byte[01] を入力.
 ;------------------------------------------------
 $BB/8F26 A5 46       LDA $46    [$00:0046]      ;
 $BB/8F28 29 0F       AND #$0F                   ;
 $BB/8F2A 69 03       ADC #$03                   ;
 $BB/8F2C 85 3C       STA $3C    [$00:003C]      ;
 ;
 $BB/8F2E A5 52       LDA $52    [$00:0052]      ; $52: Byte[01]
 $BB/8F30 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F33 E8          INX                        ;
 $BB/8F34 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8F36 D0 F8       BNE $F8    [$8F30]         ;
 $BB/8F38 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_4 xy] : (x+3) 回 Byte[01] を入力後, サブ圧縮コード[_y]を実行
 ;------------------------------------------------
 $BB/8F3B B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8F3D C8          INY                        ;
 $BB/8F3E 85 42       STA $42    [$00:0042]      ;
 $BB/8F40 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8F42 69 03       ADC #$03                   ;
 $BB/8F44 85 3C       STA $3C    [$00:003C]      ;
 ;
 $BB/8F46 A5 52       LDA $52    [$00:0052]      ;
 $BB/8F48 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F4B E8          INX                        ;
 $BB/8F4C C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8F4E D0 F8       BNE $F8    [$8F48]         ;
 $BB/8F50 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; 圧縮コード[5x] ; (x+3) 回 Byte[02]を入力
 ;------------------------------------------------
 $BB/8F53 A5 46       LDA $46    [$00:0046]      ;
 $BB/8F55 29 0F       AND #$0F                   ;
 $BB/8F57 69 03       ADC #$03                   ;
 $BB/8F59 85 3C       STA $3C    [$00:003C]      ;
 $BB/8F5B A5 53       LDA $53    [$00:0053]      ;
 ;
 $BB/8F5D 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F60 E8          INX                        ;
 $BB/8F61 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8F63 D0 F8       BNE $F8    [$8F5D]         ;
 $BB/8F65 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_5 xy] : (x+3) 回 Byte[02]を入力後, サブ圧縮コード[_y]を実行
 ;------------------------------------------------
 $BB/8F68 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8F6A C8          INY                        ;
 $BB/8F6B 85 42       STA $42    [$00:0042]      ;
 $BB/8F6D A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8F6F 69 03       ADC #$03                   ;
 $BB/8F71 85 3C       STA $3C    [$00:003C]      ;
 $BB/8F73 A5 53       LDA $53    [$00:0053]      ;
 $BB/8F75 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F78 E8          INX                        ;
 $BB/8F79 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/8F7B D0 F8       BNE $F8    [$8F75]         ;
 $BB/8F7D 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; 圧縮コード[6x] ; Byte[05-06]を入力後, サブ圧縮コード[_x]を実行
 ;------------------------------------------------
 $BB/8F80 C2 20       REP #$20                   ;
 $BB/8F82 A5 54       LDA $54    [$00:0054]      ; $54 : Byte[05-06]
 $BB/8F84 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F87 E8          INX                        ;
 $BB/8F88 E8          INX                        ;
 $BB/8F89 E2 20       SEP #$20                   ;
 $BB/8F8B 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_6] ; Byte[05-06] を入力
 ;------------------------------------------------
 $BB/8F8E C2 20       REP #$20                   ;
 $BB/8F90 A5 54       LDA $54    [$00:0054]      ; $54 : Byte[05-06]
 $BB/8F92 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8F95 E8          INX                        ;
 $BB/8F96 E8          INX                        ;
 $BB/8F97 E2 20       SEP #$20                   ;
 $BB/8F99 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[7x] ; Byte[03]を入力後, サブ圧縮コード[_x]を実行
 ;------------------------------------------------
 $BB/8F9C A5 56       LDA $56    [$00:0056]      ; $56 : Byte[03]
 $BB/8F9E 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8FA1 E8          INX                        ;
 $BB/8FA2 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_7] ; Byte[03]を入力
 ;------------------------------------------------
 $BB/8FA5 A5 56       LDA $56    [$00:0056]      ; $56 : Byte[03]
 $BB/8FA7 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8FAA E8          INX                        ;
 $BB/8FAB 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[8x] ; Byte[04]を入力後, サブ圧縮コード[_x]を実行
 ;------------------------------------------------
 $BB/8FAE A5 57       LDA $57    [$00:0057]      ; $57 : Byte[04]
 $BB/8FB0 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8FB3 E8          INX                        ;
 $BB/8FB4 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_8] ; Byte[04]を入力
 ;------------------------------------------------
 $BB/8FB7 A5 57       LDA $57    [$00:0057]      ; $57 : Byte[04]
 $BB/8FB9 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8FBC E8          INX                        ;
 $BB/8FBD 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[9x] : (x+2)バイト前から 2 バイトコピー
 ;------------------------------------------------
 $BB/8FC0 5A          PHY                        ;
 $BB/8FC1 A5 46       LDA $46    [$00:0046]      ;
 $BB/8FC3 29 0F       AND #$0F                   ;
 $BB/8FC5 69 02       ADC #$02                   ;
 $BB/8FC7 85 3E       STA $3E    [$00:003E]      ;
 $BB/8FC9 C2 20       REP #$20                   ;
 $BB/8FCB 8A          TXA                        ;
 $BB/8FCC 38          SEC                        ;
 $BB/8FCD E5 3E       SBC $3E    [$00:003E]      ;
 $BB/8FCF A8          TAY                        ;
 $BB/8FD0 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/8FD3 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8FD6 E8          INX                        ;
 $BB/8FD7 E8          INX                        ;
 $BB/8FD8 E2 20       SEP #$20                   ;
 $BB/8FDA 7A          PLY                        ;
 $BB/8FDB 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_9 xy] : (x+2)バイト前から 2 バイトコピー後, サブ圧縮コード[_y]を実行.
 ;------------------------------------------------
 $BB/8FDE B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/8FE0 C8          INY                        ;
 $BB/8FE1 85 42       STA $42    [$00:0042]      ;
 $BB/8FE3 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/8FE5 69 02       ADC #$02                   ;
 $BB/8FE7 85 3E       STA $3E    [$00:003E]      ;
 $BB/8FE9 5A          PHY                        ;
 $BB/8FEA C2 20       REP #$20                   ;
 $BB/8FEC 8A          TXA                        ;
 $BB/8FED 38          SEC                        ;
 $BB/8FEE E5 3E       SBC $3E    [$00:003E]      ;
 $BB/8FF0 A8          TAY                        ;
 $BB/8FF1 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/8FF4 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/8FF7 E8          INX                        ;
 $BB/8FF8 E8          INX                        ;
 $BB/8FF9 E2 20       SEP #$20                   ;
 $BB/8FFB 7A          PLY                        ;
 $BB/8FFC 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; 圧縮コード[Ax yy] : {(x+3)+ yy}バイト前から (x+3) バイト参照
 ;------------------------------------------------
 $BB/8FFF A5 46       LDA $46    [$00:0046]      ;
 $BB/9001 29 0F       AND #$0F                   ;
 $BB/9003 69 03       ADC #$03                   ;
 $BB/9005 85 3C       STA $3C    [$00:003C]      ;
 $BB/9007 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9009 85 3E       STA $3E    [$00:003E]      ;
 $BB/900B C8          INY                        ;
 $BB/900C 5A          PHY                        ;
 $BB/900D C2 20       REP #$20                   ;
 $BB/900F 8A          TXA                        ;
 $BB/9010 38          SEC                        ;
 $BB/9011 E5 3C       SBC $3C    [$00:003C]      ;
 $BB/9013 38          SEC                        ;
 $BB/9014 E5 3E       SBC $3E    [$00:003E]      ;
 $BB/9016 A8          TAY                        ;
 $BB/9017 E2 20       SEP #$20                   ;
 $BB/9019 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/901C C8          INY                        ;
 $BB/901D 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/9020 E8          INX                        ;
 $BB/9021 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/9023 D0 F4       BNE $F4    [$9019]         ;
 $BB/9025 7A          PLY                        ;
 $BB/9026 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_A xy yz] ; {(x+3)+ yy}バイト前から (x+3) バイトコピー後, 
 ;                          ; サブ圧縮コード[_z]を実行
 ;------------------------------------------------
 $BB/9029 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/902B C8          INY                        ;
 $BB/902C 85 42       STA $42    [$00:0042]      ;
 $BB/902E 85 46       STA $46    [$00:0046]      ;
 $BB/9030 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/9032 69 03       ADC #$03                   ;
 $BB/9034 85 3C       STA $3C    [$00:003C]      ;
 $BB/9036 A7 46       LDA [$46]  [$7E:210F]      ; [$46] = *0 ; * = $46 の下位 4bit
 $BB/9038 85 3E       STA $3E    [$00:003E]      ;
 $BB/903A B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/903C C8          INY                        ;
 $BB/903D 85 42       STA $42    [$00:0042]      ;
 $BB/903F A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/9041 05 3E       ORA $3E    [$00:003E]      ;
 $BB/9043 85 3E       STA $3E    [$00:003E]      ;
 $BB/9045 5A          PHY                        ;
 $BB/9046 C2 20       REP #$20                   ;
 $BB/9048 8A          TXA                        ;
 $BB/9049 38          SEC                        ;
 $BB/904A E5 3C       SBC $3C    [$00:003C]      ;
 $BB/904C 38          SEC                        ;
 $BB/904D E5 3E       SBC $3E    [$00:003E]      ;
 $BB/904F A8          TAY                        ;
 $BB/9050 E2 20       SEP #$20                   ;
 $BB/9052 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/9055 C8          INY                        ;
 $BB/9056 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/9059 E8          INX                        ;
 $BB/905A C6 3C       DEC $3C    [$00:003C]      ;
 $BB/905C D0 F4       BNE $F4    [$9052]         ;
 $BB/905E 7A          PLY                        ;
 $BB/905F 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; 圧縮コード[Bx yy zw] : (yyz + 103h)バイト前から (x+3) バイトコピーし,
 ;                      : サブ圧縮コード[_w]を実行.
 ;------------------------------------------------
 $BB/9062 A5 46       LDA $46    [$00:0046]      ;
 $BB/9064 29 0F       AND #$0F                   ;
 $BB/9066 69 03       ADC #$03                   ;
 $BB/9068 85 3C       STA $3C    [$00:003C]      ;
 $BB/906A B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/906C C8          INY                        ;
 $BB/906D EB          XBA                        ;
 $BB/906E B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9070 C8          INY                        ;
 $BB/9071 85 46       STA $46    [$00:0046]      ;
 $BB/9073 C2 20       REP #$20                   ;
 $BB/9075 4A          LSR A                      ;
 $BB/9076 4A          LSR A                      ;
 $BB/9077 4A          LSR A                      ;
 $BB/9078 4A          LSR A                      ;
 $BB/9079 18          CLC                        ;
 $BB/907A 69 03 01    ADC #$0103                 ;
 $BB/907D 85 40       STA $40    [$00:0040]      ;
 $BB/907F 5A          PHY                        ;
 $BB/9080 8A          TXA                        ;
 $BB/9081 38          SEC                        ;
 $BB/9082 E5 40       SBC $40    [$00:0040]      ;
 $BB/9084 A8          TAY                        ;
 $BB/9085 E2 20       SEP #$20                   ;
 $BB/9087 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/908A C8          INY                        ;
 $BB/908B 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/908E E8          INX                        ;
 $BB/908F C6 3C       DEC $3C    [$00:003C]      ;
 $BB/9091 D0 F4       BNE $F4    [$9087]         ;
 $BB/9093 7A          PLY                        ;
 $BB/9094 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_B xy yz] : (yyz + 103h)バイト前から (x+3) バイトコピー.
 ;------------------------------------------------
 $BB/9097 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9099 C8          INY                        ;
 $BB/909A 85 42       STA $42    [$00:0042]      ;
 $BB/909C A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/909E 69 03       ADC #$03                   ;
 $BB/90A0 85 3C       STA $3C    [$00:003C]      ;
 $BB/90A2 A5 42       LDA $42    [$00:0042]      ;
 $BB/90A4 29 0F       AND #$0F                   ;
 $BB/90A6 EB          XBA                        ;
 $BB/90A7 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/90A9 C8          INY                        ;
 $BB/90AA C2 20       REP #$20                   ;
 $BB/90AC 69 03 01    ADC #$0103                 ;
 $BB/90AF 85 40       STA $40    [$00:0040]      ;
 $BB/90B1 5A          PHY                        ;
 $BB/90B2 8A          TXA                        ;
 $BB/90B3 38          SEC                        ;
 $BB/90B4 E5 40       SBC $40    [$00:0040]      ;
 $BB/90B6 A8          TAY                        ;
 $BB/90B7 E2 20       SEP #$20                   ;
 $BB/90B9 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/90BC C8          INY                        ;
 $BB/90BD 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/90C0 E8          INX                        ;
 $BB/90C1 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/90C3 D0 F4       BNE $F4    [$90B9]         ;
 $BB/90C5 7A          PLY                        ;
 $BB/90C6 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[Cx yy zz] : yyzz(ビッグエンディアン)バイト前から (x+3) バイトコピー
 ;------------------------------------------------
 $BB/90C9 A5 46       LDA $46    [$00:0046]      ;
 $BB/90CB 29 0F       AND #$0F                   ;
 $BB/90CD 69 03       ADC #$03                   ;
 $BB/90CF 85 3C       STA $3C    [$00:003C]      ;
 $BB/90D1 C2 20       REP #$20                   ;
 $BB/90D3 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/90D5 EB          XBA                        ;
 $BB/90D6 85 40       STA $40    [$00:0040]      ;
 $BB/90D8 C8          INY                        ;
 $BB/90D9 C8          INY                        ;
 $BB/90DA 5A          PHY                        ;
 $BB/90DB 8A          TXA                        ;
 $BB/90DC 38          SEC                        ;
 $BB/90DD E5 40       SBC $40    [$00:0040]      ;
 $BB/90DF A8          TAY                        ;
 $BB/90E0 E2 20       SEP #$20                   ;
 ;
 $BB/90E2 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/90E5 C8          INY                        ;
 $BB/90E6 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/90E9 E8          INX                        ;
 $BB/90EA C6 3C       DEC $3C    [$00:003C]      ;
 $BB/90EC D0 F4       BNE $F4    [$90E2]         ;
 $BB/90EE 7A          PLY                        ;
 $BB/90EF 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_C xy yz zw] : yyzz(ビッグエンディアン)バイト前から (x+3) バイトコピー後,
 ;                             : サブ圧縮コード[_w]を実行.
 ;------------------------------------------------
 $BB/90F2 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/90F4 C8          INY                        ;
 $BB/90F5 85 42       STA $42    [$00:0042]      ;
 $BB/90F7 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/90F9 69 03       ADC #$03                   ;
 $BB/90FB 85 3C       STA $3C    [$00:003C]      ;
 $BB/90FD A5 42       LDA $42    [$00:0042]      ;
 $BB/90FF EB          XBA                        ;
 $BB/9100 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9102 C8          INY                        ;
 $BB/9103 C2 20       REP #$20                   ;
 $BB/9105 0A          ASL A                      ;
 $BB/9106 0A          ASL A                      ;
 $BB/9107 0A          ASL A                      ;
 $BB/9108 0A          ASL A                      ;
 $BB/9109 85 40       STA $40    [$00:0040]      ;
 $BB/910B 29 FF 00    AND #$00FF                 ;
 $BB/910E E2 20       SEP #$20                   ;
 $BB/9110 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9112 C8          INY                        ;
 $BB/9113 5A          PHY                        ;
 $BB/9114 85 42       STA $42    [$00:0042]      ;
 $BB/9116 A7 42       LDA [$42]  [$7E:2000]      ; [$42] = 0* ; * = $42 の上位 4bit
 $BB/9118 C2 20       REP #$20                   ;
 $BB/911A 29 0F 00    AND #$000F                 ;
 $BB/911D 05 40       ORA $40    [$00:0040]      ;
 $BB/911F 85 40       STA $40    [$00:0040]      ;
 $BB/9121 8A          TXA                        ;
 $BB/9122 38          SEC                        ;
 $BB/9123 E5 40       SBC $40    [$00:0040]      ;
 $BB/9125 A8          TAY                        ;
 $BB/9126 E2 20       SEP #$20                   ;
 $BB/9128 B9 00 00    LDA $0000,y[$7F:0029]      ;
 $BB/912B C8          INY                        ;
 $BB/912C 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/912F E8          INX                        ;
 $BB/9130 C6 3C       DEC $3C    [$00:003C]      ;
 $BB/9132 D0 F4       BNE $F4    [$9128]         ;
 $BB/9134 7A          PLY                        ;
 $BB/9135 4C 1D 8E    JMP $8E1D  [$7F:8E1D]      ; サブ圧縮コードへのジャンプ / $42 依存
 ;------------------------------------------------
 ; 圧縮コード[Dx] ; 1 Byte 前から 1 Byte コピーした後, サブ圧縮コード[_x]を実行
 ;------------------------------------------------
 $BB/9138 CA          DEX                        ;
 $BB/9139 BD 00 00    LDA $0000,x[$7F:0000]      ;
 $BB/913C 9D 01 00    STA $0001,x[$7F:0001]      ;
 $BB/913F E8          INX                        ;
 $BB/9140 E8          INX                        ;
 $BB/9141 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_D] ; 1 Byte 前から 1 Byte コピー
 ;------------------------------------------------
 $BB/9144 CA          DEX                        ;
 $BB/9145 BD 00 00    LDA $0000,x[$7F:0000]      ;
 $BB/9148 9D 01 00    STA $0001,x[$7F:0001]      ;
 $BB/914B E8          INX                        ;
 $BB/914C E8          INX                        ;
 $BB/914D 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[Ex] ; 2 バイト 前から 2 バイトコピーした後, サブ圧縮コード[_x]を実行
 ;------------------------------------------------
 $BB/9150 C2 20       REP #$20                   ;
 $BB/9152 CA          DEX                        ;
 $BB/9153 CA          DEX                        ;
 $BB/9154 BD 00 00    LDA $0000,x[$7F:0000]      ;
 $BB/9157 9D 02 00    STA $0002,x[$7F:0002]      ;
 $BB/915A E2 20       SEP #$20                   ;
 $BB/915C E8          INX                        ;
 $BB/915D E8          INX                        ;
 $BB/915E E8          INX                        ;
 $BB/915F E8          INX                        ;
 $BB/9160 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; サブ圧縮コード[_E] ; 2 バイト 前から 2 バイトコピー.
 ;------------------------------------------------
 $BB/9163 C2 20       REP #$20                   ;
 $BB/9165 CA          DEX                        ;
 $BB/9166 CA          DEX                        ;
 $BB/9167 BD 00 00    LDA $0000,x[$7F:0000]      ;
 $BB/916A 9D 02 00    STA $0002,x[$7F:0002]      ;
 $BB/916D E2 20       SEP #$20                   ;
 $BB/916F E8          INX                        ;
 $BB/9170 E8          INX                        ;
 $BB/9171 E8          INX                        ;
 $BB/9172 E8          INX                        ;
 $BB/9173 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; 圧縮コード[Fx] : Byte[07+2x] を書き込む
 ;------------------------------------------------
 $BB/9176 5A          PHY                        ;
 $BB/9177 A5 46       LDA $46    [$00:0046]      ;
 $BB/9179 C2 20       REP #$20                   ;
 $BB/917B 29 0F 00    AND #$000F                 ;
 $BB/917E 0A          ASL A                      ;
 $BB/917F 69 07 00    ADC #$0007                 ;
 $BB/9182 A8          TAY                        ;
 $BB/9183 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9185 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/9188 E2 20       SEP #$20                   ;
 $BB/918A E8          INX                        ;
 $BB/918B E8          INX                        ;
 $BB/918C 7A          PLY                        ;
 $BB/918D 4C 02 8E    JMP $8E02  [$7F:8E02]      ; NEXT CODE
 ;------------------------------------------------
 ; サブ圧縮コード[_F xy] : Byte[07+2x] を書き込んだ後, サブ圧縮コード[_y]を実行.
 ;------------------------------------------------
 $BB/9190 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/9192 C8          INY                        ;
 $BB/9193 85 46       STA $46    [$00:0046]      ;
 $BB/9195 C2 20       REP #$20                   ;
 $BB/9197 29 F0 00    AND #$00F0                 ;
 $BB/919A 4A          LSR A                      ;
 $BB/919B 4A          LSR A                      ;
 $BB/919C 4A          LSR A                      ;
 $BB/919D 5A          PHY                        ;
 $BB/919E 69 07 00    ADC #$0007                 ;
 $BB/91A1 A8          TAY                        ;
 $BB/91A2 B7 34       LDA [$34],y[$ED:09EF]      ; ROM_DATA
 $BB/91A4 9D 00 00    STA $0000,x[$7F:0000]      ;
 $BB/91A7 E2 20       SEP #$20                   ;
 $BB/91A9 E8          INX                        ;
 $BB/91AA E8          INX                        ;
 $BB/91AB 7A          PLY                        ;
 $BB/91AC 4C 10 8E    JMP $8E10  [$7F:8E10]      ; サブ圧縮コードへのジャンプ / $46 依存
 ;------------------------------------------------
 ; 伸張処理高速化用 (4bit取得の高速化)
 ;------------------------------------------------
 $BB/91AF A0 00 01    LDY #$0100                 ;
 $BB/91B2 7B          TDC                        ;
 $BB/91B3 AA          TAX                        ;
 $BB/91B4 E2 20       SEP #$20                   ;
 $BB/91B6 9F 00 21 7E STA $7E2100,x[$7E:2100]    ;
 $BB/91BA 18          CLC                        ;
 $BB/91BB 69 10       ADC #$10                   ;
 $BB/91BD 29 F0       AND #$F0                   ;
 $BB/91BF E8          INX                        ;
 $BB/91C0 88          DEY                        ;
 $BB/91C1 D0 F3       BNE $F3    [$91B6]         ;
 $BB/91C3 A0 00 01    LDY #$0100                 ;
 $BB/91C6 A2 00 00    LDX #$0000                 ;
 $BB/91C9 8A          TXA                        ;
 $BB/91CA 4A          LSR A                      ;
 $BB/91CB 4A          LSR A                      ;
 $BB/91CC 4A          LSR A                      ;
 $BB/91CD 4A          LSR A                      ;
 $BB/91CE 9F 00 20 7E STA $7E2000,x[$7E:2000]    ;
 $BB/91D2 E8          INX                        ;
 $BB/91D3 88          DEY                        ;
 $BB/91D4 D0 F3       BNE $F3    [$91C9]         ;
 $BB/91D6 C2 20       REP #$20                   ;
 $BB/91D8 6B          RTL                        ;
 ;------------------------------------------------
目安箱バナー