From 60c089a810a48746adea84538ec5c313720403de Mon Sep 17 00:00:00 2001 From: b166fe48b91eb09f279b79a4ecf57b2f8f0d3705 Date: Wed, 3 Feb 2021 17:56:53 -0500 Subject: [PATCH] idz: Fix saveTimeAttack codecs --- src/idz/userdb/decoder/index.ts | 8 ++++-- src/idz/userdb/decoder/saveTimeAttack.ts | 32 ++++++++++++++++++++++++ src/idz/userdb/encoder/index.ts | 4 +-- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/idz/userdb/decoder/index.ts b/src/idz/userdb/decoder/index.ts index f3f316b..0c86b97 100644 --- a/src/idz/userdb/decoder/index.ts +++ b/src/idz/userdb/decoder/index.ts @@ -48,7 +48,11 @@ import { saveProfile3 } from "./saveProfile3"; import { saveSettings1, saveSettings2 } from "./saveSettings"; import { saveStocker1, saveStocker2 } from "./saveStocker"; import { saveTeamBanner1, saveTeamBanner2 } from "./saveTeamBanner"; -import { saveTimeAttack1, saveTimeAttack2 } from "./saveTimeAttack"; +import { + saveTimeAttack1, + saveTimeAttack2, + saveTimeAttack3, +} from "./saveTimeAttack"; import { saveTopic1, saveTopic2 } from "./saveTopic"; import { unknownA_1, unknownA_2 } from "./unknownA"; import { unlockProfile1, unlockProfile2 } from "./unlockProfile"; @@ -216,7 +220,7 @@ const funcList210: ReaderFn[] = [ saveSettings2, saveStocker2, saveTeamBanner2, - saveTimeAttack2, + saveTimeAttack3, saveTopic2, unknownA_2, unlockProfile2, diff --git a/src/idz/userdb/decoder/saveTimeAttack.ts b/src/idz/userdb/decoder/saveTimeAttack.ts index 40c0f49..a119d3b 100644 --- a/src/idz/userdb/decoder/saveTimeAttack.ts +++ b/src/idz/userdb/decoder/saveTimeAttack.ts @@ -49,3 +49,35 @@ saveTimeAttack2.msgLen = 0x0080; export function saveTimeAttack2(buf: Buffer): SaveTimeAttackRequest { return saveTimeAttack(buf); } + +saveTimeAttack3.msgCode = 0x0136; +saveTimeAttack3.msgLen = 0x0080; + +export function saveTimeAttack3(buf: Buffer): SaveTimeAttackRequest { + return { + type: "save_time_attack_req", + aimeId: buf.readUInt32LE(0x0008) as AimeId, + version: 2, + dayNight: buf.readUInt8(0x0058) & 1, + payload: { + routeNo: (buf.readUInt8(0x0058) >> 1) as RouteNo, + timestamp: new Date(buf.readUInt32LE(0x005c) * 1000), + flags: buf.readUInt8(0x0060), + totalTime: buf.readUInt32LE(0x001c) / 1000, + sectionTimes: [ + buf.readUInt32LE(0x0028) / 1000, + buf.readUInt32LE(0x002c) / 1000, + buf.readUInt32LE(0x0030) / 1000, + ], + grade: buf.readUInt8(0x0066), + carSelector: buf.readUInt16LE(0x0010) as CarSelector, + }, + field_0002: buf.readUInt16LE(0x0004), + field_0008: buf.readUInt32LE(0x000c), + field_0012: buf.readUInt8(0x0016), + field_0015: buf.readUInt8(0x0019), + field_005D: buf.readUInt8(0x0061), + field_005E: buf.readUInt16LE(0x0062), + field_0060: buf.readUInt16LE(0x0064), + }; +} diff --git a/src/idz/userdb/encoder/index.ts b/src/idz/userdb/encoder/index.ts index 219a499..33a8b5b 100644 --- a/src/idz/userdb/encoder/index.ts +++ b/src/idz/userdb/encoder/index.ts @@ -255,7 +255,7 @@ function encode130(res: Response): Buffer { return saveNewCar2(res); case "save_time_attack_res": - return saveTimeAttack2(res); + return saveTimeAttack1(res); case "unlock_profile_res": return unlockProfile2(res); @@ -366,7 +366,7 @@ function encode210(res: Response): Buffer { return saveNewCar1(res); case "save_time_attack_res": - return saveTimeAttack1(res); + return saveTimeAttack2(res); case "unlock_profile_res": return unlockProfile1(res);