PS4 PSP-FPKG: PSP Compatibility on PS4 - User Submitted Test Results

Looks like new Killzone emu will let boot few isos...interesting!
Killzone-Emu.png

Works good on 5.05 btw!
 

Attachments

  • 01.jpg
    01.jpg
    592.8 KB · Views: 74
  • 02.jpg
    02.jpg
    722.3 KB · Views: 82
  • 03.jpg
    03.jpg
    831.6 KB · Views: 79
  • 04.jpg
    04.jpg
    866.8 KB · Views: 71
Ape Escape On the Loose official configs

Code:
# ApeEscapeOnTheLoose (all regions)

# use 32-bit depth buffer to fix some legacy graphics glitches
--use-higher-precision-depth=true

--enable-user-psp-right-stick-remapping=true

# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=1
--ps5-uds=1

--globalgamedata-dir=global
LUA
Code:
-- Ape Escape On The Loose patch script by Bryan Strait

apiRequest(1.0)   -- request version 1.0 API. Calling apiRequest() is mandatory.

local axObj   = getAXObject()
local gpr   = require( "ax-gpr-alias" )

print ("---------------------------------------------------------------------------------------")
print ("_NOTE: OPENING patches.lua")
print ("---------------------------------------------------------------------------------------")

print ("_NOTE: Loading Ape Escape On The Loose patch script.")
print ("_NOTE: Patch region: SIEA")

function Modify()

   if axObj.ReadMem8(0x8CD61DC) ~= 1 then
     return
   end
  
   local address = axObj.ReadMem32(0x8CF2F8C)
   address = address & 0x00FFFFFF
   address = address | 0x08000000
   address2 = address
   if address == 0x8000200 then
     return
   end
   address = address - 0xA7C
   address2 = address2 - 0xBFC
   if axObj.ReadMem32(address) == 0x04040004 and axObj.ReadMem32(address+0x280) == 0x04040004 then
     print("Verts: ", axObj.ReadMem32(address-4))
     axObj.WriteMem32(address, 0)
     axObj.WriteMem32(address+0x280, 0)
   end
  
   if axObj.ReadMem32(address2) == 0x04040004 and axObj.ReadMem32(address2+0x280) == 0x04040004 then
     print("Verts: ", axObj.ReadMem32(address2-4))
     axObj.WriteMem32(address2, 0)
     axObj.WriteMem32(address2+0x280, 0)
   end

end

function MenuDown()
   local pos = axObj.GetGpr(gpr.a0)
  
   if pos == 2 then
     axObj.SetGpr(gpr.a0, 0)
   end
end

function MenuUp()
   local pos = axObj.GetGpr(gpr.a0)
  
   if pos == 2 then
     axObj.SetGpr(gpr.a0, 1)
   end
  
end

axObj.AddHook(0x089EA5B8, 0x8C64C820, Modify)
axObj.AddHook(0x0892C674, 0x00822023, MenuDown)
axObj.AddHook(0x0892C6C4, 0x00822023, MenuUp)

no backport sadly
 
goodnews
using killzone emu. most of the graphics are now fixed, you can now play 3rd birthday without the annoying voice bug. tekken 6 is ok, tales of eternia no more slowdown on menu. but the game i want to play are still not working lunar, dissidia 12. btw so many games are now working.

i think the latest emu of psp is resistance (still no backport). i will upgrade to 9.0 after i got my order of esp32.
 
Resistance Emu, (most of them also works on killzone, i just cant remember which one)
-God of War Chain of Olympus (no more lag on intro, but cant get into gameplay cause of crash)
-Mega Man: Maveric Hunter X (perfectly working no graphics artifact or line just like a remastered game)
-Gradius Collection (perfect)
-Parodius Portable (all working but some games has a dark overlay that should be gone after booting the game, it also works on killzone emu)
-Phantasy Star Online 2 Infinity (translated game, working)
-Metal Slug XX (perfectly working, it also works on killzone emu)
-Power Stone Collection (perfectly working, just like a remastered game)
-Little Big Planet (works, can now bypass install data but low fps)
-The 3rd Birthday (perfectly working, also on killzone emu)
-Tales of Eternia (perfectly working, also on killzone emu)
-Tekken 6 (perfectly working)
-Super Robot Taisen A Portable Plus (translated game, working)

-Tactic's Ogre (One Vision Mod) (perfectly working, they say this is the best version of the game compared to remastered)
-dot hack link (translated game, working)

5/30/2024
-Ys Seven (perfectly working, another YS game i need to finish)
-Wild Arms XF (perfectly working)
-Armored Core Silent Line (working, just some overlay problem, can be fixed using config, you can now also use the right analog stick for the real fps experience )
-Final Fantasy III Remake (perfectly working)


NOT WORKING: (idk maybe it will work on you on the same emu, tried only on US region)
-Midnight Club LA Remix (crash on intro video)
-Sword Art Online Infinity Moment (translated game, crash because of installed data problem)
-Shiren 4 (translated game, crash after intro splash screen)
-GoW Ghost of Sparta (instant crash)
-Dissidia 12 (crash before the first fmv)
-Lunar (crash because of installed data problem)
-Grand Knight History (no sound on fmv then crash)
-Silent Hill Origin (gfx problem)
-Salamander Portable (menu perfect but cant start any game)
-Twinbee Portable (menu perfect but cant start any game)
-Exit (crash)
-Star Ocean 2 (black screen after square logo)


most of the game is having a problem on fmv and memory stick (vms), thats why they also redirect some video. (take a look inside of the official build of Tekken 6 , they redirected most of the video and vms) and they also use .prx (inside aot folder) to boot the game. they didnt touch the eboot.bin, (on our case we decrypted the eboot.bin) but most of the game now is working perfect, so we just have to wait for another release of psp emu
 
Last edited:
Ape Escape On the Loose Emu (CUSA37860)

config-title.txt
Code:
# ApeEscapeOnTheLoose (all regions)

# use 32-bit depth buffer to fix some legacy graphics glitches
--use-higher-precision-depth=true

--enable-user-psp-right-stick-remapping=true

# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=1
--ps5-uds=1

--globalgamedata-dir=global

LUA.
Code:
-- Ape Escape On The Loose patch script by Bryan Strait

apiRequest(1.0)    -- request version 1.0 API. Calling apiRequest() is mandatory.

local axObj    = getAXObject()
local gpr    = require( "ax-gpr-alias" )

print ("---------------------------------------------------------------------------------------")
print ("_NOTE: OPENING patches.lua")
print ("---------------------------------------------------------------------------------------")

print ("_NOTE: Loading Ape Escape On The Loose patch script.")
print ("_NOTE: Patch region: SIEA")

function Modify()

    if axObj.ReadMem8(0x8CD61DC) ~= 1 then
        return
    end
 
    local address = axObj.ReadMem32(0x8CF2F8C)
    address = address & 0x00FFFFFF
    address = address | 0x08000000
    address2 = address
    if address == 0x8000200 then
        return
    end
    address = address - 0xA7C
    address2 = address2 - 0xBFC
    if axObj.ReadMem32(address) == 0x04040004 and axObj.ReadMem32(address+0x280) == 0x04040004 then
        print("Verts: ", axObj.ReadMem32(address-4))
        axObj.WriteMem32(address, 0)
        axObj.WriteMem32(address+0x280, 0)
    end
 
    if axObj.ReadMem32(address2) == 0x04040004 and axObj.ReadMem32(address2+0x280) == 0x04040004 then
        print("Verts: ", axObj.ReadMem32(address2-4))
        axObj.WriteMem32(address2, 0)
        axObj.WriteMem32(address2+0x280, 0)
    end

end

function MenuDown()
    local pos = axObj.GetGpr(gpr.a0)
 
    if pos == 2 then
        axObj.SetGpr(gpr.a0, 0)
    end
end

function MenuUp()
    local pos = axObj.GetGpr(gpr.a0)
 
    if pos == 2 then
        axObj.SetGpr(gpr.a0, 1)
    end
 
end

axObj.AddHook(0x089EA5B8, 0x8C64C820, Modify)
axObj.AddHook(0x0892C674, 0x00822023, MenuDown)
axObj.AddHook(0x0892C6C4, 0x00822023, MenuUp)

Well, works ok on 5.05, just something wrong with framerate! Killzone works more stable!

Anyway that emu let us activate right stick inside emu! Very good!


Ape Escape On the Loose. Short GamePlay!
VIDEO
 

Attachments

  • 01.jpg
    01.jpg
    473.9 KB · Views: 68
  • 02.jpg
    02.jpg
    515.2 KB · Views: 73
  • 03.jpg
    03.jpg
    576 KB · Views: 59
  • 04.jpg
    04.jpg
    664.1 KB · Views: 60
Last edited:
is there any way to make iso that will work on psp? not using the umdgen. im making a tools that will auto decrypt eboot bin and automatically make iso. (not the pkg for ps4). ive successfully made the tools but the problem is the generated iso is not for psp. (it will work on ppsspp but im sure it will not on ps4 and psp real hardware)
if i put that file on umdgen, it will says it's not a PSP iso.

mkisofs.exe and 7z.exe the tools i use is this.


edit:nvm.:tranquillity:
 
Last edited:
Thanks for sharing these test results! It's great to see the community coming together to troubleshoot and improve PSP game compatibility on PS4. Hopefully, you'll get some helpful tips to optimize your conversions and minimize lag.

Happy gaming!
 
God of War Chains of Olympus. (Ape Escape On The Loose emu).
VIDEO


Emu Fix cutscenes but gameplay still laggy!


most of the game that crash like GoW:CoO needs to scale down, like LBP (but its kinda playable on 20+fps something), Midnight Club LA Remix needs to scale down but of course it also lag.
 
Assassin's Creed: Bloodlines - ULES01367

Emu used = MediEvil - Resurrection workong!!

PSP2PS4 v1.0


config-title.txt
Code:
# Assassin's Creed Bloodlines (all regions)

--gputhread=true
--has-shown-start-select-help=1
--vramcopyback=45
--texloadcores=48
--smoothlevel=0
--present=vblankstart
--app-volume=1.35
--texclutmode=full
--depthscalehack=true

# UV clamping
--through-uv-clamp-enabled=true
--hack-through-uv-clamp-enabled=true
--through-uv-clamp-use-zero-edge-alpha=false

--enable-user-psp-right-stick-remapping=true

# to fix legacy game bug reading from nullptr (MAST-8981)
--mem-access-nullptr=RW

--hack-use-sku-vms=true

# Enabled on both platforms. Makes the Dragon Armor fire breath work consistently.
--bend-30hz-lock=1

--[ps4]-audio-latency=60ms

# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=0
--ps5-uds=0

--globalgamedata-dir=global
 
Castlevania The Dracula X Chronicles - ULUS10277

Emu used = MediEvil - Resurrection


Plays very good, without any slowdown. FMVs run slow, but it can be skipped. Also tested SOTN, works very well.

config-title.txt

Code:
# Castlevania The Dracula X Chronicles

--gputhread=true
--has-shown-start-select-help=1
--vramcopyback=45
--texloadcores=48
--smoothlevel=0
--present=vblankstart
--app-volume=1.35
--texclutmode=full
--depthscalehack=true
--optimize-fb-self-resolves=true
--psp-large-ram=1

# UV clamping
--through-uv-clamp-enabled=true
--hack-through-uv-clamp-enabled=true

--app-volume=1.3

--enable-user-psp-right-stick-remapping=false

--bend-30hz-lock=0

--[ps4]-audio-latency=70ms

# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=0
--ps5-uds=0

--globalgamedata-dir=global
 
Resistance Retribution Emu (CUSA32636)

config-title.txt
Code:
--[ps4]-audio-latency=72ms
--enable-resistance-retribution-plus-mode=true
--bend-30hz-lock=1
--bend-30hz-lock-pc-list=0x8c776e4
--triangle-discard-enabled=true
--[ps5]-boost-cpu-clock=true
--round-depth-to-16bit=true
--enable-user-psp-right-stick-remapping=false
--psp-right-stick-action=false
--psp-large-ram=1
--use-higher-precision-depth=false
--enable-customize-buttons-menu=false
--clear-rs-remap-mode=true
--region-dir=SIEA
--ps4-trophies=1
--ps5-uds=1
--globalgamedata-dir=global

LUA.
Code:
--LUA 5.3
--Title: Resistance: Retribution
--Author: Jay Poulisse

--Version 1.0: Initial Commit To Git for SIEA
--Version 1.1: Fixed Death and Final Boss kill trophies
--Version 1.2: Fixed Death Trophies
--Version 1.3: Re-Engineered Level-based Trophies
--Version 1.4: Fix tracking of Auger Used 100x Trophy
--Version 1.5: Re-Engineered Final Boss Kill trophy
--Version 1.6: Fixed broken weapon tracking function
--Version 1.7: Changed level trophies to Level Breifing text search
--Version 1.8: Fixed Auger Trophy
--Version 1.9: Fixed Chrysalis trophy by searching for text after death
--Version 2.0: Fixed Weapons Tracking
--Version 2.1: Fixed Crash
--Version 2.2: Fixed Level Scanning
--Version 2.2.1: Fixed Crash
--Version 2.3: Updated ReadString function, fixed nil misspellings
--Version 2.4: Fixed Death calls for all languages
--Version 2.4.1: Fixed death calls to be check death flag
--Version 2.4.2: Fixed Weapon Used Table
--Version 2.4.3: Fixed Chrysalis Death
--Version 2.4.4: Fixed Crash Fix, MP no longer selectable
--Version 3.0.1: Fixed Numbers
--Version 4.0: Updated Hooks from PC/OP to OP+Offset
--Version 4.2: Touched Up Tracking

apiRequest(1.0)    -- request version 1.0 API. Calling apiRequest() is mandatory.

print ("SCRIPT VESION 4.2!")


-- set as appropriate
local USA = 100
local JAPAN = 200
local EUROPE = 300

local REGION = USA

local gpr        = require( "ax-gpr-alias" ) -- you can access Allegrex GPR by alias (gpr.a0 / gpr["a0"])
local pad        = require("pad")

local emuObj = getEmuObject()
local axObj = getAXObject()
local trophyObj = getTrophyObject()

local     TROPHY_retrobution_paid                                                            =     0
local    TROPHY_grayson_and_cartwright_together_again                                    =    1
local    TROPHY_who_dragged_you_off_the_scrap_heap                                        =    2
local    TROPHY_ill_relax_when_the_sky_is_safe                                            =    3
local    TROPHY_a_moment_to_relax                                                        =    4
local    TROPHY_I_kind_of_like_you                                                        =    5
local    TROPHY_stay_with_me                                                                =    6
local    TROPHY_im_having_fish_tonight                                                    =    7
local    TROPHY_you_call_that_an_angel                                                    =    8
local    TROPHY_im_not_in_your_army_remember                                                =    9
local    TROPHY_I_love_what_youve_done_to_the_place                                        =    10
local    TROPHY_this_worksite_is_closed_permanently                                        =    11
local    TROPHY_started_the_evacuation                                                    =    12
local    TROPHY_burrowers_always_leave_something_behind                                    =    13
local    TROPHY_finish_the_serum                                                            =    14
local    TROPHY_great_shooting_grayson                                                    =    15
local    TROPHY_catacomb_caper                                                            =    16
local    TROPHY_I_really_hate_mallery                                                    =     17
local    TROPHY_buried_a_burrower                                                        =    18
local    TROPHY_I_still_plan_to_kill_all_of_them                                            =    19
local    TROPHY_so_thats_why_its_called_a_hammer                                            =    20
local    TROPHY_give_mallery_what_he_had_coming                                            =    21
local    TROPHY_injected_the_serum                                                        =    22
local     TROPHY_destroy_the_chrysalis_and_raine                                            =    23
local    TROPHY_soft_spot                                                                =    24
local    TROPHY_that_was_an_experience                                                    =    25
local    TROPHY_omni_lethal                                                                =    26
local    TROPHY_cloven_killer                                                            =    27

--DLC TROPHIES
local     TROPHY_Sentinel_Survivor                                                        =     28
local     TROPHY_Infected_Inception                                                        =    29
local     TROPHY_Ive_Got_Your_Cure_Right_Here                                                =     30


local LEVEL_WRITE_OPCODE = 0x83C40000 --*1
local LEVEL_WRITE_ADDR = 0x08C893BC -- *1 Find where the level file is being sent to memory
--local DEAD_WRITE_OPCODE = 0x82050000 --*2
--local DEAD_WRITE_ADDR = 0x08C6E6D8 --*2 Find the death screen. Death screen is treated the same as the pause screen... I wish I were kidding.
local DEAD_WRITE_ADDR = 0x08913098 --08913098:A2040020 sb           $a0,0x20($s0)
local DEAD_WRITE_OPCODE = 0xA2040020
--local CHRY_WRITE_OPCODE = 0x8C840000 --08CDF86C:8C840000 lw           $a0,0($a0)
--local CHRY_WRITE_ADDR = 0x08CDF86C --*3 Final boss death animation OLD
local CHRY_WRITE_ADDR    = 0x08CDF840 --08CDF840:8E540038 lw           $s4,0x38($s2)
local CHRY_WRITE_OPCODE    = 0x8E540038
local WEAPON_WRITE_OPCODE = 0x8E440014 --*4
local WEAPON_WRITE_ADDR = 0x0891252C --*4 Writes the value of the equipped gun to memory
local KILLCOUNT_OPCODE = 0x00912021 -- *5
local KILLCOUNT_ADDR = 0x088B2920 --088B2918:00912021 addu         $a0,$a0,$s1
local EXPLOSION_OPCODE    = 0x00912021 --088B296C:00912021 addu         $a0,$a0,$s1
local EXPLOSION_ADDR    = 0x088B296C
local AUGER_AMMO_USED_ADDR = 0x088B347C
local AUGER_AMMO_USED_OP = 0x8E0402AC
local KillCount_Threshold = 50
local Weapon_Count_Threshold = 10
local InfectedFlagAddr = 0x8F20468
local NormalKillsAddr    = 0x8F20478
local ExplosionKillsAddr = 0x8F20488
local TotalKillsAddr    = 0x8F20498
local MagnumStorageAddr    = 0x8F204A8
local MagnumKillsAddr    = 0x8F204B8
local AugerUsedAddr        = 0x8F204C8
local File_Name_Address = 0x8E983E8
local MP_ADDR            = 0x08AECB08 --08AECB08:A0A4003C sb           $a0,0x3c($a1)
local MP_OPCODE            = 0xA0A4003C
pad = {}

pad.L3        = 0x00000002    -- L3 (PS4)
pad.R3        = 0x00000004    -- R3 (PS4)
pad.OPTIONS   = 0x00000008    -- Options (PS4)
pad.UP        = 0x00000010    -- Up
pad.RIGHT     = 0x00000020    -- Right
pad.DOWN      = 0x00000040    -- Down
pad.LEFT      = 0x00000080    -- Left
pad.L2        = 0x00000100    -- L2 (PS4)
pad.R2        = 0x00000200    -- R2 (PS4)
pad.L1        = 0x00000400    -- L1
pad.R1        = 0x00000800    -- R1
pad.TRIANGLE  = 0x00001000    -- Triangle
pad.CIRCLE    = 0x00002000    -- Circle
pad.CROSS     = 0x00004000    -- Cross
pad.SQUARE    = 0x00008000    -- Square
pad.SELECT    = 0x00010000    -- Select
pad.START     = 0x00020000    -- Start


local SaveData = emuObj.LoadConfig()


local function initsaves()
    local doSave = false
    
    if SaveData.t == nil then
        SaveData.t  = {}
        doSave = true
    end
    
    if SaveData.DLCTrophies == nil then
        SaveData.DLCTrophies  = {}
        doSave = true
    end
    
    if SaveData.InfectedIntel == nil then
        SaveData.InfectedIntel  = {}
        doSave = true
    end
    
    if SaveData.InfectedLevels == nil then
        SaveData.InfectedLevels  = {}
        doSave = true
    end
    
    if SaveData["44MagKills"] == nil then
        SaveData["44MagKills"] = 0
        doSave = true
    end
    
    if SaveData["Kills"] == nil then
        SaveData["Kills"] = 0
        doSave = true
    end
    
    if SaveData["AugerUseCount"] == nil then
        SaveData["AugerUseCount"] = 0
        doSave = true
    end
    
    if (SaveData.weapons_used == nil) then           
        SaveData.weapons_used = {}
        for x = 1, Weapon_Count_Threshold do        -- 10 slots for weapon ids
            SaveData.weapons_used[x] = 0xff         -- 0xff indicates an empty slot.
        end
    doSave = true
    end
    
    
    for x = 0, TROPHY_cloven_killer do
        if SaveData.t[x] == nil then
            SaveData.t[x] = 0
            doSave = true
        end
    end
    
    for x = 28, 30 do
        if SaveData.DLCTrophies[x] == nil then
            SaveData.DLCTrophies[x] = 0
            doSave = true
        end
    end
    
    for x = 1, 21 do
        if SaveData.InfectedIntel[x] == nil then
            SaveData.InfectedIntel[x] = 0
            doSave = true
        end
    end

    for x = 1, 23 do
        if SaveData.InfectedLevels[x] == nil then
            SaveData.InfectedLevels[x] = 0
            doSave = true
        end
    end

    if doSave == true then
        emuObj.SaveConfig(SaveData)
        print "_NOTE: ***** initsaves: Saving Config *****"
    end
end


initsaves()


function TriggerTrophy(trophy_id)
    
    print ("---------------------------------------------------------------------------------------")
    print (string.format("CHECKING TROPHY %d", trophy_id))
    print ("---------------------------------------------------------------------------------------")

    if SaveData.t[trophy_id] ~= 1 then
        SaveData.t[trophy_id] = 1
        trophyObj.Unlock(trophy_id)
        print ("---------------------------------------------------------------------------------------")
        print (string.format("TROPHY_NOTE: %d Awarded!", trophy_id))
        print ("---------------------------------------------------------------------------------------")
        
        emuObj.SaveConfig(SaveData)
    else
        print ("TROPHY_NOTE: %d Previously Awarded!", trophy_id)   
    end

    
    for x = 1, TROPHY_cloven_killer do
    
        if x ~= TROPHY_retrobution_paid then
        
            if SaveData.t[x] == nil or SaveData.t[x] == 0 then
                return
            end
        end
    end
    
    if SaveData.t[TROPHY_retrobution_paid] == 1 then
        print("TROPHY %d: ALREADY AWARDED!", TROPHY_retrobution_paid)
    else
        print("TROPHY %d Awarded!", TROPHY_retrobution_paid)
    end
end

function TriggerDLCTrophy(trophy_id)

        if SaveData.DLCTrophies[trophy_id] ~= 1 then
        SaveData.DLCTrophies[trophy_id] = 1
        trophyObj.Unlock(trophy_id)
        print ("---------------------------------------------------------------------------------------")
        print (string.format("TROPHY_NOTE: %d Awarded!", trophy_id))
        print ("---------------------------------------------------------------------------------------")
        
        emuObj.SaveConfig(SaveData)
    else
        print ("TROPHY_NOTE: %d Previously Awarded!", trophy_id)   
    end

end



-- Reads a null terminated string and returns it.
function ReadString(address)
    -- Initialized to empty (probably not needed but still)
    local result = ""
    
    -- Just in case!
    local failsafe = 0
    
    local mem = 0
    mem = axObj.ReadMem8(address);
    if mem == nil or type(mem) ~= "number" then
        print("Mem: ", mem)
        mem = 0
    end
    
    -- Loop as long as the address being read is not null, and put the value into mem.
    while mem ~= 0 and failsafe < 2048 do
        -- Add the character to our string.
        result = result .. string.char(mem)
        
        -- Increase the address.
        address = address + 1
        
        -- Get new memory location.
        mem = axObj.ReadMem8(address);
        if mem == nil or type(mem) ~= "number" then
            print("Mem: ", mem)
            mem = 0
        end
        
        -- Increase our failsafe to prevent very long strings/buffer overflows/bad things/etc.
        failsafe = failsafe + 1
    end
    
    -- Return the result.
    return result
end
-- Called on the loading screen shortly before loading is completed.

function Infected()

    local GetTextReg    = axObj.GetGpr(gpr.a1)
    local ConvertToString = axObj.ReadMemStr(GetTextReg)
    
    if (ConvertToString == "INFECTED_WIDGET") then
        print ("INFECTED MODE ENABLED!")
        axObj.WriteMem8(InfectedFlagAddr, 1)
    end
    if (ConvertToString == "PSP_PLUS_WIDGET") then
        print ("Transferring SaveData Trackers To Memory...")
        print ("Total Kills Amount: ", SaveData["Kills"])
        print ("Total 44 Mag Kills Amount :", SaveData["Kills"])
        print ("Total Auger Used Times: ", SaveData["AugerUseCount"])
        axObj.WriteMem8(TotalKillsAddr, SaveData["Kills"])
        axObj.WriteMem8(MagnumKillsAddr, SaveData["44MagKills"])
        axObj.WriteMem8(AugerUsedAddr, SaveData["AugerUseCount"])
    end

end
InfectedOp = 0x00C84821 --08D05D88:00C84821 addu         $t1,$a2,$t0
axObj.AddHook("Resistance", 0x4F2388, InfectedOp, Infected)



function OnLevelWrite()

    --Level_Number = axObj.ReadMem8(0x8B38E0C) -- Level Number
    --Minigame_Signal = axObj.ReadMem8(0x08b38e08) --Minigame = 9, DLC = 2, Base game = 1
    
    print("=========================================================")
    print("    OnLoad")
    print("=========================================================")

    
    -- Grab the current file name.
    local filename = ReadString(File_Name_Address)
    
    -- Print for debug.
    print("File: ", filename)
    
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)

    if (filename == "ROTER_C1") then
        print ("2nd Rotterdam Level Hit! Award Trophy Grayson and Cartwrite Together Again!")
        TriggerTrophy(TROPHY_grayson_and_cartwright_together_again)
    end
    if (filename == "ROTER_C1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 2nd Rotterdam Level Hit!")
        TrackInfectedLevels(1)
    end
    if (filename == "ROTER_A1") then
        print ("3rd Rotterdam Level Hit! Award Trophy Who Dragged You Off The Scrap Heap!")
        TriggerTrophy(TROPHY_who_dragged_you_off_the_scrap_heap)
    end
    if (filename == "ROTER_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 3rd Rotterdam Level Hit!")
        TrackInfectedLevels(2)
    end
    if (filename == "ROTER_D1") then
        print ("4th Rotterdam Level Hit! Award Trophy I'll Relax When The Sky Is Safe!")
        TriggerTrophy(TROPHY_ill_relax_when_the_sky_is_safe)
    end
    if (filename == "ROTER_D1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 4th Rotterdam Level Hit!")
        TrackInfectedLevels(3)
    end
    if (filename == "BONN_A1") then
        print ("1st Bonn Level Hit! Award Trophy A Moment To Relax!")
        TriggerTrophy(TROPHY_a_moment_to_relax)
    end
    if (filename == "BONN_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 1st Bonn Level Hit!")
        TrackInfectedLevels(4)
    end
    if (filename == "BONN_B1") then
        print ("2nd Bonn Level Hit! Award Trophy I Kind Of Like You!")
        TriggerTrophy(TROPHY_I_kind_of_like_you)
    end
    if (filename == "BONN_B1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 2st Bonn Level Hit!")
        TrackInfectedLevels(5)
    end
    if (filename == "BONN_C1") then
        print ("3rd Bonn Level Hit! Award Trophy Stay With Me!")
        TriggerTrophy(TROPHY_stay_with_me)
    end
    if (filename == "BONN_C1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 3rd Bonn Level Hit!")
        TrackInfectedLevels(6)
    end
    if (filename == "BONN_D1") then
        print ("4th Bonn Level Hit! Award Trophy I'm Having Fish Tonight!")
        TriggerTrophy(TROPHY_im_having_fish_tonight)
    end
    if (filename == "BONN_D1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 4th Bonn Level Hit!")
        TrackInfectedLevels(7)
    end
    if (filename == "TRENC_A1") then
        print ("1st Construction Level Hit! Award Trophy You Call That An Angel!")
        TriggerTrophy(TROPHY_you_call_that_an_angel)
    end
    if (filename == "TRENC_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 1st Bonn Level Hit!")
        TrackInfectedLevels(8)
    end
    if (filename == "TRENC_B1") then
        print ("2nd Construction Level Hit! Award Trophy I'm Not In Your Army Remember!")
        TriggerTrophy(TROPHY_im_not_in_your_army_remember)
    end
    if (filename == "TRENC_B1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 2nd Bonn Level Hit!")
        TrackInfectedLevels(9)
    end
    if (filename == "TRENC_C1") then
        print ("3rd Construction Level Hit! Award Trophy I Love What You've Done To The Place!")
        TriggerTrophy(TROPHY_I_love_what_youve_done_to_the_place)
    end
    if (filename == "TRENC_C1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 3rd Bonn Level Hit!")
        TrackInfectedLevels(10)
    end
    if (filename == "LUXEM_A1") then
        print ("1st Luxem Level Hit! Award Trophy This Worksite Is Closed Permanently!")
        TriggerTrophy(TROPHY_this_worksite_is_closed_permanently)
    end
    if (filename == "LUXEM_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 1st Luxem Level Hit!")
        TrackInfectedLevels(11)
    end
    if (filename == "LUXEM_B1") then
        print ("2nd Luxem Level Hit! Award Trophy Started The Evacuation!")
        TriggerTrophy(TROPHY_started_the_evacuation)
    end
    if (filename == "LUXEM_B1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 2nd Luxem Level Hit!")
        TrackInfectedLevels(12)
    end
    if (filename == "LUXEM_E1") then
        print ("3rd Luxem Level Hit! Award Trophy Burrowers Always Leave Something Behind!")
        TriggerTrophy(TROPHY_burrowers_always_leave_something_behind)
    end
    if (filename == "LUXEM_E1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 3rd Luxem Level Hit!")
        TrackInfectedLevels(13)
    end
    if (filename == "LUXEM_C1") then
        print ("4th Luxem Level Hit! Award Trophy Finish The Serum!")
        TriggerTrophy(TROPHY_finish_the_serum)
    end
    if (filename == "LUXEM_C1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 4th Luxem Level Hit!")
        TrackInfectedLevels(14)
    end
    if (filename == "CATAC_A1") then
        print ("1st Catacombs Level Hit! Award Trophy Great Shooting Grayson")
        TriggerTrophy(TROPHY_great_shooting_grayson)
    end
    if (filename == "CATAC_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 1st Catacombs Level Hit!")
        TrackInfectedLevels(15)
    end
    if (filename == "CATAC_B1") then
        print ("2nd Catacombs Level Hit! Award Trophy Catacomb Caper")
        TriggerTrophy(TROPHY_catacomb_caper)
    end
    if (filename == "CATAC_B1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 2nd Catacombs Level Hit!")
        TrackInfectedLevels(16)
    end
    if (filename == "CATAC_C1") then
        print ("3rd Catacombs Level Hit! Award Trophy I Really Hate Mallery")
        TriggerTrophy(TROPHY_I_really_hate_mallery)
    end
    if (filename == "CATAC_C1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 3rd Catacombs Level Hit!")
        TrackInfectedLevels(17)
    end
    if (filename == "CATAC_D1") then
        print ("4th Catacombs Level Hit! Award Trophy Buried A Burrower")
        TriggerTrophy(TROPHY_buried_a_burrower)
    end
    if (filename == "CATAC_D1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 4th Catacombs Level Hit!")
        TrackInfectedLevels(18)
    end
    if (filename == "TOWER_A1") then
        print ("1st Tower Level Hit! Award Trophy I Still Plan To Kill All Of Them")
        TriggerTrophy(TROPHY_I_still_plan_to_kill_all_of_them)
    end
    if (filename == "TOWER_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 1st Tower Level Hit!")
        TrackInfectedLevels(19)
    end
    if (filename == "TOWER_B1") then
        print ("2nd Tower Level Hit! Award Trophy So That's Why It's Called A Hammer")
        TriggerTrophy(TROPHY_so_thats_why_its_called_a_hammer)
    end
    if (filename == "TOWER_B1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 2nd Tower Level Hit!")
        TrackInfectedLevels(20)
    end
    if (filename == "TOWER_C1") then
        print ("3rd Tower Level Hit! Give Mallery What He Had Coming")
        TriggerTrophy(TROPHY_give_mallery_what_he_had_coming)
    end
    if (filename == "TOWER_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 3rd Tower Level Hit!")
        TrackInfectedLevels(21)
    end
    if (filename == "TOWER_E1") then
        print ("4th Tower Level Hit! Award Trophy Injected The Serum")
        TriggerTrophy(TROPHY_injected_the_serum)
    end
    if (filename == "TOWER_A1" and GetInfectedFlag == 1) then
        print ("**INFECTED** 4th Tower Level Hit!")
        TrackInfectedLevels(22)
    end
end
axObj.AddHook("Resistance", 0x4759BC, LEVEL_WRITE_OPCODE, OnLevelWrite)

function DeathHook()
    
    local DeathFlag = axObj.GetGpr(gpr.a0) --This seems to be set to 1 when health is set to 0

    if (DeathFlag == 1) then
        print ("YOU HAVE DIED! AWARDING TROPHY THAT WAS AN EXPERIENCE")
        TriggerTrophy(TROPHY_that_was_an_experience)
    end
    
end
axObj.AddHook("Resistance", 0xFF698, DEAD_WRITE_OPCODE, DeathHook)

function Chry_Death()

    
    local Chry_Death_Flag = axObj.GetGpr(gpr.s1)
    local DeathName = ReadString(Chry_Death_Flag)
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)
    
    if (DeathName == "N_CHRY_DEATH") then
        TriggerTrophy(TROPHY_destroy_the_chrysalis_and_raine)
        print ("CHRYSALIS IS DEAD! AWARDING TROPHY DESTORY THE CHRYSALIS AND RAINE!")
    end
    if (DeathName == "N_CHRY_DEATH" and GetInfectedFlag == 1) then
        print ("**INFECTED** CHRYSALIS IS DEAD!")
        TrackInfectedLevels(23)
    end

end
axObj.AddHook("Resistance", 0x4CBE40, CHRY_WRITE_OPCODE, Chry_Death)

function WeaponsUsed(Weapon)

    for x = 0, Weapon_Count_Threshold do
        if SaveData.weapons_used[x] == 0xFF then
            SaveData.weapons_used[x] = Weapon
            emuObj.SaveConfig(SaveData)
            --print("NOTE_: Weapon %x is being put into table", Weapon)
            break
        elseif (SaveData.weapons_used[x] == Weapon) then
            break
        end
    end
    if SaveData.weapons_used[Weapon_Count_Threshold] ~= 0xFF then
        TriggerTrophy(TROPHY_omni_lethal)
    end
            
end

function KillCount()

    print ("KILLCOUNT HOOK!")
    
    local GetTotalKills = axObj.ReadMem8(TotalKillsAddr)
    local GetMagnumStorage = axObj.ReadMem8(MagnumStorageAddr)
    local GetMagnumKills = axObj.ReadMem8(MagnumKillsAddr)
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)
    NewKC = GetTotalKills + 1
    axObj.WriteMem8(TotalKillsAddr, NewKC)
    SaveData["Kills"] = NewKC
    emuObj.SaveConfig(SaveData)
    print ("NewKC is currently at: ", NewKC)
    if (GetTotalKills >= 50) then
        TriggerTrophy(TROPHY_cloven_killer)
    end

    --print ("MAGNUM STORAGE: ", GetMagnumStorage)
    --print ("INFECTED FLAG: ", GetInfectedFlag)
--[[
    if (GetMagnumStorage == 1 and GetInfectedFlag == 1) then
        New44Mag = GetMagnumKills + 1
        axObj.WriteMem8(MagnumKillsAddr, GetMagnumKills + 1)
        SaveData["44MagKills"] = GetMagnumKills
        emuObj.SaveConfig(SaveData)
    end
--]]

    if (GetMagnumStorage == 1 and GetInfectedFlag == 1) then
        AddMagnumKC()
    end

    if (GetMagnumKills >= 24 and GetInfectedFlag == 1) then
        TriggerDLCTrophy(TROPHY_Ive_Got_Your_Cure_Right_Here)
    end
    
    --[[

    local GetTotalKills = axObj.ReadMem8(TotalKillsAddr)
    local GetMagnumStorage = axObj.ReadMem8(MagnumStorageAddr)
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)
    local GetMagnumKills = axObj.ReadMem8(MagnumKillsAddr)
    
    axObj.WriteMem8(TotalKillsAddr, GetTotalKills + 1)
    SaveData["Kills"] = GetTotalKills
    emuObj.SaveConfig(SaveData)
    if (GetTotalKills >= 49) then
        TriggerTrophy(TROPHY_cloven_killer)
    end   
    --]]

end
axObj.AddHook("Resistance", 0x9EF18, KILLCOUNT_OPCODE, KillCount)
--[[
function ExplosionKillCount()

    --print ("EXPLOSION HOOK!")
    local GetTotalKills = axObj.ReadMem8(TotalKillsAddr)
    local GetMagnumStorage = axObj.ReadMem8(MagnumStorageAddr)
    local GetMagnumKills = axObj.ReadMem8(MagnumKillsAddr)
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)
    axObj.WriteMem8(TotalKillsAddr, GetTotalKills + 1)
    SaveData["Kills"] = GetTotalKills
    emuObj.SaveConfig(SaveData)
    if (GetTotalKills >= 49) then
        TriggerTrophy(TROPHY_cloven_killer)
    end

    --print ("MAGNUM STORAGE: ", GetMagnumStorage)
    --print ("INFECTED FLAG: ", GetInfectedFlag)
--[[
    if (GetMagnumStorage == 1 and GetInfectedFlag == 1) then
        New44Mag = GetMagnumKills + 1
        axObj.WriteMem8(MagnumKillsAddr, GetMagnumKills + 1)
        SaveData["44MagKills"] = GetMagnumKills
        emuObj.SaveConfig(SaveData)
    end
--]]
--[[
    if (GetMagnumStorage == 1 and GetInfectedFlag == 1) then
        AddMagnumKC()
    end

    if (GetMagnumKills >= 24) then
        TriggerDLCTrophy(TROPHY_Ive_Got_Your_Cure_Right_Here)
    end

end
axObj.AddHook("Resistance", 0x9EF6C, EXPLOSION_OPCODE, ExplosionKillCount)
--]]
function AddMagnumKC()

    print ("MAGNUM KILLCOUNT HOOK!")

    local GetMagnumStorage = axObj.ReadMem8(MagnumStorageAddr)
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)
    local GetMagnumKills = axObj.ReadMem8(MagnumKillsAddr)
    local GetTotalKills = axObj.ReadMem8(TotalKillsAddr)
    New44Mag = GetMagnumKills + 1
    axObj.WriteMem8(MagnumKillsAddr, New44Mag)
    SaveData["44MagKills"] = New44Mag
    print ("NewMagnumKC is currently at: ", New44Mag)
    emuObj.SaveConfig(SaveData)
    
    if (GetMagnumKills >= 24 and GetInfectedFlag == 1) then
        TriggerTrophy(TROPHY_Ive_Got_Your_Cure_Right_Here)
    end
    
    if (GetTotalKills >= 50) then
        TriggerTrophy(TROPHY_cloven_killer)
    end

end

function BarrelKillCount()

    print ("BARREL KILLCOUNT HOOK!")

    local GetTotalKills = axObj.ReadMem8(TotalKillsAddr)
    local GetMagnumStorage = axObj.ReadMem8(MagnumStorageAddr)
    local GetMagnumKills = axObj.ReadMem8(MagnumKillsAddr)
    local GetInfectedFlag = axObj.ReadMem8(InfectedFlagAddr)
    NewKC = GetTotalKills + 1
    axObj.WriteMem8(TotalKillsAddr, NewKC)
    SaveData["Kills"] = GetTotalKills
    emuObj.SaveConfig(SaveData)
    print ("NewKC is currently at: ", NewKC)
    if (GetTotalKills >= 50) then
        TriggerTrophy(TROPHY_cloven_killer)
    end

end
BarrelKillCountOp = 0x24A50001 --088B325C:24A50001 addiu        $a1,$a1,1
axObj.AddHook("Resistance", 0x9F85C, BarrelKillCountOp, BarrelKillCount)
--]]

function AugerUsed() --Tracking of ammunition used is possible. If WeaponEquipped == Auger and AmmoUsed >= 100 then trigger trophy
    
    local Weapon_Register = axObj.GetGpr(gpr.a0)
    local Weapon_Table_Register = axObj.GetGpr(gpr.a2)
    local Ammo_Count = axObj.GetGpr(gpr.a1)
    --print (Weapon_Table_Register)
    --print (Ammo_Count)
    --print (Weapon)
    
    
    if (Weapon_Table_Register == 0) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("Grenade!")
    end
    if (Weapon_Table_Register == 144) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        AddAugerUsed()
        print ("AUGER WS!")
    end
    if (Weapon_Table_Register == 96) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("303 RIFLE!")
    end
    if (Weapon_Table_Register == 208) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("SNIPER RIFLE!")
    end
    if (Weapon_Table_Register == 336) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("001 RAZOR!")
    end
    if (Weapon_Table_Register == 320) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("CHAINGUN!")
    end
    if (Weapon_Table_Register == 288) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("SHOTGUN!")
    end
    if (Weapon_Table_Register == 64) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("ROCKET LAUNCHER!")
    end
    if (Weapon_Table_Register == 176) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("LONGBOW!")
    end
    if (Weapon_Table_Register == 368) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("PLASMA GRENADE!")
    end
    if (Weapon_Table_Register == 192) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("ALLURE!")
    end
    if (Weapon_Table_Register == 464) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 1)
        print ("MAGNUM!")
    end
    if (Weapon_Table_Register == 608) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("ADVANCED AUGER!")
    end
    if (Weapon_Table_Register == 576) then
        WeaponsUsed(Weapon_Table_Register)
        axObj.WriteMem8(MagnumStorageAddr, 0)
        print ("003 RAZOR")
    end
    if (Weapon_Table_Register ~= 464) then
        axObj.WriteMem8(MagnumStorageAddr, 0)
    end
end
axObj.AddHook("Resistance", 0x9FA7C, AUGER_AMMO_USED_OP, AugerUsed)

function AddAugerUsed()

    local GetTotalAuger = axObj.ReadMem8(AugerUsedAddr)
    axObj.WriteMem8(AugerUsedAddr, GetTotalAuger + 1)
    SaveData["AugerUseCount"] = GetTotalAuger
    emuObj.SaveConfig(SaveData)
    if (GetTotalAuger >= 99) then
        TriggerTrophy(TROPHY_soft_spot)
    end

end


function OnIntel()
--Borrowed from Aim Assist intel patch...
    
    -- String is held in A0, get it.
    local s = axObj.ReadMemStr(axObj.GetGpr(gpr.a0))
    
    if s == "INTEL_3_0_0" then
        print("Are We Soldiers or Archaeologist Infected Intel Collected!")
        TrackInfectedIntel(1)
    end
    if s == "INTEL_3_0_1" then
        print("Strange Is A Relative Term Infected Intel Collected!")
        TrackInfectedIntel(2)
    end
    if s == "INTEL_3_0_2" then
        print("Yanks Aren't Talking Infected Intel Collected!")
        TrackInfectedIntel(3)
    end
    if s == "INTEL_3_0_3" then
        print("The Yanks' Dirty Work Infected Intel Collected!")
        TrackInfectedIntel(4)
    end
    if s == "INTEL_3_1_0" then
        print("Too Big To Carry Infected Intel Collected!")
        TrackInfectedIntel(5)
    end
    if s == "INTEL_3_1_1" then
        print("We're Not Alone Infected Intel Collected!")
        TrackInfectedIntel(6)
    end
    if s == "INTEL_3_1_2" then
        print("We're Not Alone Infected Intel Collected!")
        TrackInfectedIntel(7)
    end
    if s == "INTEL_3_1_3" then
        print("Sirens or Furies Infected Intel Collected!")
        TrackInfectedIntel(8)
    end
    if s == "INTEL_3_1_4" then
        print("Power of the Atom Infected Intel Collected!")
        TrackInfectedIntel(9)
    end
    if s == "INTEL_3_2_0" then
        print("Screaming Roger Cosby Infected Intel Collected!")
        TrackInfectedIntel(10)
    end
    if s == "INTEL_3_2_1" then
        print("Buried Secrets Infected Intel Collected!")
        TrackInfectedIntel(11)
    end
    if s == "INTEL_3_3_0" then
        print("A Stink That Just Won't Quit Infected Intel Collected!")
        TrackInfectedIntel(12)
    end
    if s == "INTEL_3_3_1" then
        print("Gray Skies Infected Intel Collected!")
        TrackInfectedIntel(13)
    end
    if s == "INTEL_3_3_2" then
        print("Wild Kingdom Infected Intel Collected!")
        TrackInfectedIntel(14)
    end
    if s == "INTEL_3_3_3" then
        print("Super Sub-Human Infected Intel Collected!")
        TrackInfectedIntel(15)
    end
    if s == "INTEL_3_3_4" then
        print("Chink in the Armor Infected Intel Collected!")
        TrackInfectedIntel(16)
    end
    if s == "INTEL_3_4_0" then
        print("Treasure Trove Infected Intel Collected!")
        TrackInfectedIntel(17)
    end
    if s == "INTEL_3_4_1" then
        print("Alien Blood Diamonds Infected Intel Collected!")
        TrackInfectedIntel(18)
    end
    if s == "INTEL_3_4_2" then
        print("How Long Have These Been Here Infected Intel Collected!")
        TrackInfectedIntel(19)
    end
    if s == "INTEL_3_4_3" then
        print("Dark Mirror Infected Intel Collected!")
        TrackInfectedIntel(20)
    end
    if s == "INTEL_3_5_0" then
        print("Bastard or Saint Infected Intel Collected!")
        TrackInfectedIntel(21)
    end
    
end

axObj.AddHook("Resistance", 0x289BC, 0x00E04025, OnIntel)

function TrackInfectedIntel(IntelID)

    for x = 1, 21 do
        if SaveData.InfectedIntel[x] == 0 then
            SaveData.InfectedIntel[x] = IntelID
            emuObj.SaveConfig(SaveData)
            --print("NOTE_: Weapon %x is being put into table", Weapon)
            break
        elseif (SaveData.InfectedIntel[x] == IntelID) then
            break
        end
    end
    if SaveData.InfectedIntel[21] ~= 0 then
        TriggerDLCTrophy(TROPHY_Infected_Inception)
    end

end

function TrackInfectedLevels(LevelID)

for x = 1, 23 do
        if SaveData.InfectedLevels[x] == 0 then
            SaveData.InfectedLevels[x] = LevelID
            emuObj.SaveConfig(SaveData)
            --print("NOTE_: Weapon %x is being put into table", Weapon)
            break
        elseif (SaveData.InfectedLevels[x] == LevelID) then
            break
        end
    end
    if SaveData.InfectedLevels[23] ~= 0 then
        TriggerDLCTrophy(TROPHY_Sentinel_Survivor)
    end

end

Works ok on 5.05! Other files attached in rar. file!

Resistance Retribution. Short GamePlay!
VIDEO
 

Attachments

Is it possible that the same issue GoldHen with the PSX emu is causing weirdness with this emu as well? I have reasons to believe something is going on similar ....

Config for Generation of Chaos -playable

any chance you can look at Generation of Chaos 6 Pandora's Reflection
 
Using PSPHD emulator:

Ys I and II Chronicles - Working without sound and without words in menus
Ys III The Oath in Felghana - Working
Valkyria Chronicles 2 - Crash at beggining
Valkyria Chronicles 3 - Crash at beggining
Half-Minute Hero - Working
Yuusha 30 Second - Working

Looking for someone who can upload Wild Arms XF. The ISOs i find are encrypted and cant be converted.
 
Last edited:
LittleBigPlanet (UCES01264)

Code:
Resistance Retribution emu

Stuck at loading of game - FiXed! ("Forever loading" issue).

LittleBigPlanet|GamePlay|FiXed|5.05|PSPtoPS4 Test

 

Similar threads

Back
Top