From ed6c44d99a97d143c97aa85925b9b32aa04f70a7 Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Mon, 7 Oct 2019 19:21:12 +0800 Subject: [PATCH] Add ATY,RockHopper2 driver This removes the need for darthnVader's heroically patched ATI Extensions. --- ATY,RockHopper2-1.0.1f63-20040916.133447.pef | Bin 0 -> 91205 bytes macmini.py | 88 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 ATY,RockHopper2-1.0.1f63-20040916.133447.pef diff --git a/ATY,RockHopper2-1.0.1f63-20040916.133447.pef b/ATY,RockHopper2-1.0.1f63-20040916.133447.pef new file mode 100644 index 0000000000000000000000000000000000000000..2f02b081058257e574a76676ecc000dc8529f77c GIT binary patch literal 91205 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 rO0Qs8mjh', code, glue_offset + 2) + + print('ATY,RockHopper2 patch: catching %s to change device 0x5962 to 0x5961' % glue_info['function']) + + # ...So replace it with a branch to the end of the code + code[glue_offset:glue_offset+4] = assemble('b %d' % (len(code) - glue_offset)) + for i in range(glue_offset+4, glue_offset+24, 4): code[i:i+4] = assemble('nop') + + code.extend(assemble(f""" + mflr r0 # Standard stack setup + stw r0, 8(r1) + stwu r1, -0x40(r1) + + stw r4, 0x38(r1) # Make the call, + stw r5, 0x3c(r1) # but save the args first + bl ExpMgrConfigReadLong + + cmpwi cr0, r3, 0 # If call failed, punt + bne cr0, _return + + lwz r4, 0x38(r1) # If wrong address, punt + cmpwi cr0, r4, 0 + bne cr0, _return + + lwz r5, 0x3c(r1) # If wrong returned value, punt + lwz r8, 0(r5) + lis r7, 0x1002 + ori r7, r7, 0x5962 + cmpw cr0, r7, r8 + bne cr0, _return + + lis r8, 0x1002 # Save the new returned value + ori r8, r8, 0x5961 + stw r8, 0(r5) + + _return: # Stack teardown + lwz r1, 0(r1) + lwz r0, 8(r1) + mtlr r0 + blr + + # r3=opaqueNRptr, r4=config_addr, r5=result_ptr + ExpMgrConfigReadLong: + lwz r12, {glue_toc}(r2) + stw r2, 0x14(r1) + lwz r0, 0(r12) + lwz r2, 4(r12) + mtctr r0 + bctr + """)) + + open(code_path, 'wb').write(code) + return cfmtool.build(tmp, dest) + + for (parent, folders, files) in os.walk(src): folders.sort(); files.sort() # make it kinda deterministic for filename in files: @@ -353,6 +427,20 @@ for (parent, folders, files) in os.walk(src): f.write('prop flags=0x0000c a=kauai-ata b=ata\n') f.write('\tndrv flags=0x00006 name=driver,AAPL,MacOS,PowerPC src=kauai-ata.pef.lzss\n\n') + if not any(fnmatch.fnmatch(fn, 'ATY,RockHopper2*.pef') for fn in os.listdir(parent)): + print('ROM lacks ATY,RockHopper2 driver, patching it in') + + ndrv1 = path.join(path.dirname(__file__), 'ATY,RockHopper2-1.0.1f63-20040916.133447.pef') + ndrv2 = path.join(parent, path.basename(ndrv1)) + shutil.copy(ndrv1, ndrv2) + + patch_rockhopper_ndrv(ndrv2, ndrv2) + + # compatible w/ ATY,RockHopper2 and device_type=display, override existing + with open(full, 'a') as f: + f.write('prop flags=0x0000c a=ATY,RockHopper2 b=display\n') + f.write('\tndrv flags=0x00004 name=driver,AAPL,MacOS,PowerPC src=%s\n\n' % path.basename(ndrv2)) + if path.exists(path.join(parent, 'MotherBoardHAL.pef')): print('ROM has MotherBoardHAL (< ROM 6.7), therefore unlikely to work')