Skip to content Skip to sidebar Skip to footer

How To Convert Javascript Anonymous Function To Java Maybe With Switch?

Here is the javascript code below with a few anonymous inner functions linked to it seems 2 array indexes for each switch, they seem to return some value too, but I have no idea wh

Solution 1:

I started splitting the memoryReadJumpCompile into combining them into memoryHighRead and memoryRead functions. Takes about 1 hour per function.

Here is a example of the memoryReader, I completed them all 4 of them (memoryRead/memoryReadHigh/memoryWrite/memoryWriteHigh), not sure if it works, still over 100 errors! haha long way to go.

public long memoryReader(address) {
    //return memoryReader[address](this, address);if (address < 16384) {
        return memoryReadNormal(address);
    } elseif (address < 32768) {
        return memoryReadROM(address);
    } elseif (address < 38912) {
        return (cGBC) ? VRAMDATAReadCGBCPU(address) : VRAMDATAReadDMGCPU(address);
    } elseif (address < 40960) {
        return (cGBC) ? VRAMCHRReadCGBCPU(address) : VRAMCHRReadDMGCPU(address);
    } elseif (address >= 40960 && address < 49152) {
        if ((numRAMBanks == 1 / 16 && address < 41472) || numRAMBanks >= 1) {
            if (cMBC7) {
                return memoryReadMBC7(address);
            } elseif (!cMBC3) {
                return memoryReadMBC(address);
            } else {
                return memoryReadMBC3(address);
            }
        } else {
            return memoryReadBAD();
        }
    } elseif (address >= 49152 && address < 57344) {
        if (!cGBC || address < 53248) {
            return memoryReadNormal(address);
        } else {
            return memoryReadGBCMemory(address);
        }
    } elseif (address >= 57344 && address < 65024) {
        if (!cGBC || address < 61440) {
            return memoryReadECHONormal(address);
        } else {
            return memoryReadECHOGBCMemory(address);
        }
    } elseif (address < 65184) {
        return memoryReadOAM(address);
    } elseif (cGBC && address >= 65184 && address < 65280) {
        return memoryReadNormal(address);
    } elseif (address >= 65280) {
        switch (address) {
        case 65280:
            return192 | memory[65280];
            break;
        case 65281:
            return (memory[65282] < 128) ? memory[65281] : 255;
            break;
        case 65282:
            if (cGBC) {
                return ((serialTimer <= 0) ? 124 : 252) | memory[65282];
            } else {
                return ((serialTimer <= 0) ? 126 : 254) | memory[65282];
            }
            break;
        case 65283:
            return memoryReadBAD();
            break;
        case 65284:
            memory[65284] = (memory[65284] + (DIVTicks >> 8)) & 255;
            DIVTicks &= 255;
            return memory[65284];
            break;
        case 65285:
        case 65286:
            return memoryReadNormal(address);
            break;
        case 65287:
            return248 | memory[65287];
            break;
        case 65288:
        case 65289:
        case 65290:
        case 65291:
        case 65292:
        case 65293:
        case 65294:
            return memoryReadBAD();
            break;
        case 65295:
            return224 | interruptsRequested;
            break;
        case 65296:
            return128 | memory[65296];
            break;
        case 65297:
            return63 | memory[65297];
            break;
        case 65298:
            return memoryReadNormal(address);
            break;
        case 65299:
            return memoryReadBAD();
            break;
        case 65300:
            return191 | memory[65300];
            break;
        case 65301:
            return memoryReadBAD();
            break;
        case 65302:
            return63 | memory[65302];
            break;
        case 65303:
            return memoryReadNormal(address);
            break;
        case 65304:
            return memoryReadBAD();
            break;
        case 65305:
            return191 | memory[65305];
            break;
        case 65306:
            return127 | memory[65306];
            break;
        case 65307:
            return memoryReadBAD();
            break;
        case 65308:
            return159 | memory[65308];
            break;
        case 65309:
            return memoryReadBAD();
            break;
        case 65310:
            return191 | memory[65310];
            break;
        case 65311:
        case 65312:
            return memoryReadBAD();
            break;
        case 65313:
        case 65314:
            return memoryReadNormal(address);
            break;
        case 65315:
            return191 | memory[65315];
            break;
        case 65316:
        case 65317:
            return memoryReadNormal(address);
            break;
        case 65318:
            c.audioJIT();
            return112 | memory[65318];
            break;
        case 65319:
        case 65320:
        case 65321:
        case 65322:
        case 65323:
        case 65324:
        case 65325:
        case 65326:
        case 65327:
            return memoryReadBAD();
            break;
        case 65328:
        case 65329:
        case 65330:
        case 65331:
        case 65332:
        case 65333:
        case 65334:
        case 65335:
        case 65336:
        case 65337:
        case 65338:
        case 65339:
        case 65340:
        case 65341:
        case 65342:
        case 65343:
            return (channel3canPlay) ? memory[65280 | (channel3lastSampleLookup >> 1)] : memory[address];
            break;
        case 65344:
            return memoryReadNormal(address);
            break;
        case 65345:
            return128 | memory[65345] | modeSTAT;
            break;
        case 65346:
            return backgroundY;
            break;
        case 65347:
            return backgroundX;
            break;
        case 65348:
            return ((LCDisOn) ? memory[65348] : 0);
            break;
        case 65349:
        case 65350:
        case 65351:
        case 65352:
        case 65353:
            return memoryReadNormal(address);
            break;
        case 65354:
            return windowY;
            break;
        case 65355:
            return memoryReadNormal(address);
            break;
        case 65356:
            return memoryReadBAD();
            break;
        case 65357:
            return memoryReadNormal(address);
            break;
        case 65358:
            return memoryReadBAD();
            break;
        case 65359:
            return currVRAMBank;
            break;
        case 65360:
        case 65361:
        case 65362:
        case 65363:
        case 65364:
            return memoryReadNormal(address);
            break;
        case 65365:
            if (cGBC) {
                if (!LCDisOn && hdmaRunning) {
                    DMAWrite((memory[65365] & 127) + 1);
                    memory[65365] = 255;
                    hdmaRunning = false;
                }
                return memory[65365];
            } else {
                return memoryReadNormal(address);
            }
            break;
        case 65366:
            if (cGBC) {
                return60 | ((memory[65366] >= 192) ? (2 | (memory[65366] & 193)) : (memory[65366] & 195));
            } else {
                return memoryReadNormal(address);
            }
            break;
        case 65367:
        case 65368:
        case 65369:
        case 65370:
        case 65371:
        case 65372:
        case 65373:
        case 65374:
        case 65375:
        case 65376:
        case 65377:
        case 65378:
        case 65379:
        case 65380:
        case 65381:
        case 65382:
        case 65383:
            return memoryReadBAD();
            break;
        case 65384:
        case 65385:
        case 65386:
        case 65387:
            return memoryReadNormal(address);
            break;
        case 65388:
            if (cGBC) {
                return254 | memory[65388];
            } else {
                return memoryReadBAD();
            }
            break;
        case 65389:
        case 65390:
        case 65391:
            return memoryReadBAD();
            break;
        case 65392:
            if (cGBC) {
                return64 | memory[65392];
            } else {
                return memoryReadBAD();
            }
            break;
        case 65393:
            return memoryReadBAD();
            break;
        case 65394:
        case 65395:
            return memoryReadNormal(address);
            break;
        case 65396:
            if (cGBC) {
                return memoryReadNormal(address);
            } else {
                return memoryReadBAD();
            }
            break;
        case 65397:
            return143 | memory[65397];
            break;
        case 65398:
        case 65399:
            return0;
            break;
        case 65400:
        case 65401:
        case 65402:
        case 65403:
        case 65404:
        case 65405:
        case 65406:
        case 65407:
            return memoryReadBAD();
            break;
        case 65535:
            return interruptsEnabled;
            break;
        default:
            return memoryReadNormal(address);
        }
    } else {
        return memoryReadBAD();
    }
}

Post a Comment for "How To Convert Javascript Anonymous Function To Java Maybe With Switch?"