ipf decoder update

This commit is contained in:
minjaesong
2022-09-18 00:21:14 +09:00
parent 3f521e2fb6
commit 9cd9febf9c
7 changed files with 21 additions and 17 deletions

View File

@@ -26,7 +26,12 @@ if (!magicMatching) {
}
// decode input image
let width = sys.peek(infilePtr+8) | (sys.peek(infilePtr+9) << 8)
let ipfFile = files.open("FBIPF")
graphics.clearText(); graphics.clearPixels(0); graphics.clearPixels2(0)
ipfFile.pwrite(infilePtr, infile.size, 0)
sys.free(infilePtr)
/*let width = sys.peek(infilePtr+8) | (sys.peek(infilePtr+9) << 8)
let height = sys.peek(infilePtr+10) | (sys.peek(infilePtr+11) << 8)
let hasAlpha = (sys.peek(infilePtr+12) != 0)
let ipfType = sys.peek(infilePtr+13)
@@ -44,4 +49,4 @@ graphics.setGraphicsMode(4)
graphics.clearText(); graphics.clearPixels(0); graphics.clearPixels2(0)
decodefun(ipfbuf, -1048577, -1310721, width, height, hasAlpha)
sys.free(ipfbuf)
sys.free(ipfbuf)*/

View File

@@ -8,10 +8,8 @@ let noalpha = exec_args[4] != undefined && exec_args[4].toLowerCase() == "/noalp
let infile = files.open(_G.shell.resolvePathInput(exec_args[2]).full)
let outfile = files.open(_G.shell.resolvePathInput(exec_args[3]).full)
let ipfType = exec_args[1]|0
let encodefun = undefined
if (1 == exec_args[1]) encodefun = graphics.encodeIpf1
if (2 == exec_args[1]) encodefun = graphics.encodeIpf2
let ipfType = (exec_args[1]|0) - 1
let encodefun = ([graphics.decodeIpf1, graphics.decodeIpf2])[ipfType]
if (encodefun === undefined) throw Error(`Unknown IPF format: ${exec_args[1]}`)
// read input file
@@ -25,7 +23,7 @@ let hasAlpha = (4 == channels) && !noalpha
// encode image
let ipfBlockCount = Math.ceil(imgw / 4.0) * Math.ceil(imgh / 4.0)
let ipfSizePerBlock = 12 + 4*(ipfType - 1) + 8*hasAlpha
let ipfSizePerBlock = 12 + 4*(ipfType) + 8*hasAlpha
let ipfRawSize = ipfSizePerBlock * ipfBlockCount
let ipfarea = sys.malloc(ipfRawSize)
let gzippedImage = sys.malloc(28 + ipfRawSize+8) // ipf file header + somewhat arbitrary number. Get the actual count using 28+gzlen