Browse Source

去哪里找Node的内容呢

tags/v24.0
枫谷剑仙 4 years ago
parent
commit
f1c880e7d0
3 changed files with 68 additions and 2 deletions
  1. +63
    -0
      data/extlist.ts
  2. +4
    -1
      data/index.ts
  3. +1
    -1
      data/run.bat

+ 63
- 0
data/extlist.ts View File

@@ -0,0 +1,63 @@
export interface Extlist {
numMons: number;
numCards: number;
checksum: number;
entries: ExtlistEntry[];
}

export interface ExtlistEntry {
isCards: boolean;
id: number;
width: number;
height: number;
numFrames: number;
frameRate: number;
checksum: number;
size: number;
lastUpdate: number;
compressedSize: number;
compressedChecksum: number;
}

export const Extlist = {
load(buf: Buffer): Extlist {
const numMons = buf.readUInt32LE(0);
const numCards = buf.readUInt32LE(4);
const sig = buf.readUInt32LE(8);
const checksum = buf.readUInt32LE(12);
if (sig !== 0x31545845) { // EXT1
throw new Error('invalid extlist.bin signature');
}

const entries: ExtlistEntry[] = [];
const numEntries = numMons + numCards;
const compressedInfoOffset = 0x10 + numEntries * 24;
for (let i = 0; i < numEntries; i++) {
const flags = buf.readUInt16LE(0x10 + i * 24 + 0);
const isCards = (flags & 0x4000) !== 0;
const id = flags & ~0x4000;
if (id === 0) continue;

entries.push({
isCards,
id,
width: buf.readUInt16LE(0x10 + i * 24 + 6),
height: buf.readUInt16LE(0x10 + i * 24 + 8),
numFrames: buf.readUInt16LE(0x10 + i * 24 + 10),
frameRate: buf.readUInt16LE(0x10 + i * 24 + 12),
checksum: buf.readUInt16LE(0x10 + i * 24 + 14),
size: buf.readUInt32LE(0x10 + i * 24 + 16),
lastUpdate: buf.readUInt32LE(0x10 + i * 24 + 20),
compressedSize: buf.readUInt32LE(compressedInfoOffset + i * 8 + 0),
compressedChecksum: buf.readUInt32LE(compressedInfoOffset + i * 8 + 4),
});
}

return {
numMons,
numCards,
checksum,
entries,
};
},
};

+ 4
- 1
data/index.ts View File

@@ -1,4 +1,5 @@
import { basename } from "https://deno.land/std/path/mod.ts";
import { Extlist } from './extlist.ts';
const regions = [
{path: 'pad', regionID: 'JA', baseJsonURL: 'https://dl.padsv.gungho.jp/base_adr.json'},
{path: 'padEN', regionID: 'NA', baseJsonURL: 'https://dl-na.padsv.gungho.jp/base-na-adr.json'},
@@ -27,4 +28,6 @@ for (const region of regions) {
const extdllistUrl = `${baseJsonData.efl}/extdllist.bin`;
console.log(`正在下载 ${extdllistUrl}`);
const extdllistResponse = await downloadFile(extdllistUrl, region.path);
}
const extlist = Extlist.load(extlistResponse);
extlist.entries.forEach((item)=>{console.log(item)});
}

+ 1
- 1
data/run.bat View File

@@ -1,2 +1,2 @@
@echo off
deno run --allow-net --allow-read --allow-write --unstable index.js
deno run --allow-net --allow-read --allow-write --unstable index.ts

Loading…
Cancel
Save