Mercurial > touhou
comparison pytouhou/formats/ecl.py @ 113:732c64662f87
Minor changes
| author | Thibaut Girka <thib@sitedethib.com> |
|---|---|
| date | Wed, 07 Sep 2011 00:17:11 +0200 |
| parents | e544f9a7966d |
| children | 7769ce7be03c |
comparison
equal
deleted
inserted
replaced
| 112:e544f9a7966d | 113:732c64662f87 |
|---|---|
| 10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 ## GNU General Public License for more details. | 12 ## GNU General Public License for more details. |
| 13 ## | 13 ## |
| 14 | 14 |
| 15 | 15 import struct |
| 16 from struct import pack, unpack, calcsize | 16 from struct import pack, unpack, calcsize |
| 17 from pytouhou.utils.helpers import read_string | 17 from pytouhou.utils.helpers import read_string |
| 18 | 18 |
| 19 from pytouhou.utils.helpers import get_logger | 19 from pytouhou.utils.helpers import get_logger |
| 20 | 20 |
| 131 132: ('i', None), | 131 132: ('i', None), |
| 132 133: ('', None), | 132 133: ('', None), |
| 133 134: ('', None), | 133 134: ('', None), |
| 134 135: ('i', None)} #TODO | 134 135: ('i', None)} #TODO |
| 135 | 135 |
| 136 _main_instructions = {0: ('ffIhHHH', 'spawn_enemy'), | 136 _main_instructions = {0: ('fffhHHH', 'spawn_enemy'), |
| 137 2: ('ffIhHHH', 'spawn_enemy_mirrored'), | 137 2: ('fffhHHH', 'spawn_enemy_mirrored'), |
| 138 4: ('ffIhHHH', 'spawn_enemy_random'), | 138 4: ('fffhHHH', 'spawn_enemy_random'), |
| 139 6: ('ffIhHHH', 'spawn_enemy_mirrored_random'), | 139 6: ('fffhHHH', 'spawn_enemy_mirrored_random'), |
| 140 8: ('', None), | 140 8: ('', None), |
| 141 9: ('', None), | 141 9: ('', None), |
| 142 10: ('II', None), | 142 10: ('II', None), |
| 143 12: ('', None)} | 143 12: ('', None)} |
| 144 | 144 |
| 243 args[-1] = args[-1].encode('shift_jis') | 243 args[-1] = args[-1].encode('shift_jis') |
| 244 format = '%s%ds' % (format[:-1], len(args[-1])) | 244 format = '%s%ds' % (format[:-1], len(args[-1])) |
| 245 format = '<IHHHH%s' % format | 245 format = '<IHHHH%s' % format |
| 246 size = calcsize(format) | 246 size = calcsize(format) |
| 247 instruction_offsets.append((instruction_offsets[-1] + len(instruction_datas[-1])) if instruction_offsets else 0) | 247 instruction_offsets.append((instruction_offsets[-1] + len(instruction_datas[-1])) if instruction_offsets else 0) |
| 248 instruction_datas.append(pack(format, time, opcode, size, rank_mask, param_mask, *args)) | 248 try: |
| 249 instruction_datas.append(pack(format, time, opcode, size, rank_mask, param_mask, *args)) | |
| 250 except struct.error: | |
| 251 logger.error('Failed to assemble opcode %d' % opcode) | |
| 252 raise | |
| 249 | 253 |
| 250 #TODO: clean up this mess | 254 #TODO: clean up this mess |
| 251 for instruction, data, offset in zip(sub, instruction_datas, instruction_offsets): | 255 for instruction, data, offset in zip(sub, instruction_datas, instruction_offsets): |
| 252 time, opcode, rank_mask, param_mask, args = instruction | 256 time, opcode, rank_mask, param_mask, args = instruction |
| 253 if opcode in (2, 29, 30, 31, 32, 33, 34): # relative_jump | 257 if opcode in (2, 29, 30, 31, 32, 33, 34): # relative_jump |
