Skip to content

Commit 8c9473a

Browse files
committed
fixed header loader order
1 parent b2b9015 commit 8c9473a

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ autorun(
3232
log.queue.length;
3333
log.drain();
3434
},
35-
{ delay: 400 },
35+
{ delay: 100 },
3636
);
3737

3838
export const logger = (...args) => {

app/formats/scripts/run-script.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { loadScript } from './file';
2-
import { logger } from '#components/file/map-debug';
2+
import { logger } from './debug';
33
import { toJS } from 'mobx';
44

55
const binary = Symbol('binary');
@@ -60,17 +60,13 @@ function makeOffsetTable({ read, write }) {
6060
a = header;
6161
}
6262
}
63-
ref.global.cleanup.push(({ sprites }) => {
64-
const clone = [...sprites];
63+
ref.global.cleanup.push(({ sprites, spritesAddr }) => {
6564
sprites.splice(0, sprites.length);
6665
headers.forEach(header => {
6766
if (header === 0) {
6867
sprites.push([]); // handle zero header optimization
6968
} else {
70-
const sprite = clone.shift();
71-
if (sprite) {
72-
sprites.push(sprite);
73-
}
69+
sprites.push(spritesAddr[header]);
7470
}
7571
});
7672
});
@@ -120,6 +116,7 @@ export default catchFunc((file) => {
120116
const readLimit = 1e3;
121117

122118
const createReader = (sectionList = []) => catchFunc((buffer) => {
119+
logger('buf length', buffer.length);
123120
const bitBuffer = [];
124121
let cursor = 0;
125122
let bufferOverflow = false;
@@ -134,6 +131,7 @@ export default catchFunc((file) => {
134131
const bytesNeeded = Math.ceil(nextBitQty/8);
135132

136133
const bytes = Array.from(buffer.slice(cursor, cursor + bytesNeeded));
134+
logger('buffer', ...bytes.map(b => b.toString(16)))
137135

138136
const bits = bytes.map(d => d.toString(2).padStart(8, 0))
139137
.join('')
@@ -144,26 +142,32 @@ export default catchFunc((file) => {
144142
bitBuffer.push(...bits);
145143
}
146144
}
145+
147146
// flush the buffer
148147
const binString = bitBuffer.splice(0, size).join('')
149148
if (type === signed && binString[0] === '1') {
150149
return ((1 << size) - parseInt(binString, 2)) * -1;
151150
}
152151
const value = parseInt(binString, 2);
153-
logger('read', {size, value, type, cursor, len: buffer.length});
152+
logger('read', {size, value}, cursor, binString);
154153
return value;
155154
});
156155

157156
const global = { cleanup: [] };
158157
const sprites = [];
158+
const spritesAddr = {};
159159
sectionList.forEach(([readFrame], i) => {
160-
logger(`section `, i);
160+
logger(`---section `, i);
161161
read: for (let spriteIndex = 0; spriteIndex < readLimit; spriteIndex++) {
162+
logger(`--sprite ${spriteIndex.toString(16)} `);
162163
const sprite = [];
163164
const ref = { global };
165+
spritesAddr[cursor] = sprite;
164166
const readMapping = readFrame(spriteIndex);
165167
if (readMapping) {
168+
logger('read mapping');
166169
for (let frameIndex = 0; frameIndex < readLimit; frameIndex++) {
170+
logger(`-frame ${frameIndex.toString(16)} `);
167171
const mapping = {};
168172
const param = {
169173
mapping,
@@ -181,8 +185,10 @@ export default catchFunc((file) => {
181185
if (result === constants.endSection || bufferOverflow) {
182186
break read;
183187
}
188+
logger('mapping', mapping);
184189
sprite.push(mapping);
185190
if (result === constants.endFrame) {
191+
logger('end frame');
186192
break;
187193
}
188194
}
@@ -192,7 +198,7 @@ export default catchFunc((file) => {
192198

193199
});
194200

195-
global.cleanup.forEach(task => task({ sprites }));
201+
global.cleanup.forEach(task => task({ sprites, spritesAddr }));
196202

197203
return {sprites};
198204
});

0 commit comments

Comments
 (0)