Merge pull request #32 from beeanyew/wip-crap

Some updates and fixes from wip-crap
This commit is contained in:
beeanyew
2021-07-11 09:39:14 +02:00
committed by GitHub
18 changed files with 376 additions and 104 deletions

View File

@@ -141,6 +141,17 @@ Uncomment the line, by removing the #:
net.ipv4.ip_forward=1
```
- To prevent the A314 Ethernet from ceasing to function after a short amount of time, you **must** perform these steps:
Open the file `/etc/rc.local` using your preferred text editor, for instance this is how you would do it with nano:
```
sudo nano /etc/rc.local
```
Insert this line to the file, on a line **before** `exit 0`. Do **not** remove the `exit 0` line at the end of the file.
```
arp -s 192.168.2.2 40:61:33:31:34:65
```
This will add the A314 Ethernet's MAC address as a static ARP entry for the Raspberry Pi's internal networking whatever so it doesn't randomly forget about the Amiga.
- Reboot the Pi.
#### **On the Amiga**:

View File

@@ -79,3 +79,10 @@ keyboard k nograb noautoconnect
# Syntax is mouse [device] [toggle key] [autoconnect|noautoconnect]
# (see "keyboard" above for autoconnect description)
mouse /dev/input/mice m noautoconnect
# Uncommenting below moves slow ram to the chip ram giving 1MB of chip ram
# NOTE: Requires a 1MB ECS Agnus (8372) and a trapdoor memory expansion!
#setvar move-slow-to-chip
# Swap DF0 with DF1/2/3 - Useful for Kickstart 1.x / Trackloader games that will only boot from DF0
#setvar swap-df0-df 1

View File

@@ -42,6 +42,9 @@
int kb_hook_enabled = 0;
int mouse_hook_enabled = 0;
int cpu_emulation_running = 1;
int swap_df0_with_dfx = 0;
int spoof_df0_id = 0;
int move_slow_to_chip = 0;
uint8_t mouse_dx = 0, mouse_dy = 0;
uint8_t mouse_buttons = 0;
@@ -867,6 +870,13 @@ static inline int32_t platform_read_check(uint8_t type, uint32_t addr, uint32_t
*res = (rres ^ 0x40);
return 1;
}
if (swap_df0_with_dfx && spoof_df0_id) {
// DF0 doesn't emit a drive type ID on RDY pin
// If swapping DF0 with DF1-3 we need to provide this ID so that DF0 continues to function.
rres = (uint32_t)ps_read(type, addr);
*res = (rres & 0xDF); // Spoof drive id for swapped DF0 by setting RDY low
return 1;
}
return 0;
break;
case CIAAICR:
@@ -940,10 +950,36 @@ static inline int32_t platform_read_check(uint8_t type, uint32_t addr, uint32_t
}
return 0;
break;
case CIABPRB:
if (swap_df0_with_dfx) {
uint32_t result = (uint32_t)ps_read(type, addr);
// SEL0 = 0x80, SEL1 = 0x10, SEL2 = 0x20, SEL3 = 0x40
if (((result >> SEL0_BITNUM) & 1) != ((result >> (SEL0_BITNUM + swap_df0_with_dfx)) & 1)) { // If the value for SEL0/SELx differ
result ^= ((1 << SEL0_BITNUM) | (1 << (SEL0_BITNUM + swap_df0_with_dfx))); // Invert both bits to swap them around
}
*res = result;
return 1;
}
return 0;
break;
default:
break;
}
if (move_slow_to_chip && addr >= 0x080000 && addr <= 0x0FFFFF) {
// A500 JP2 connects Agnus' A19 input to A23 instead of A19 by default, and decodes trapdoor memory at 0xC00000 instead of 0x080000.
// We can move the trapdoor to chipram simply by rewriting the address.
addr += 0xB80000;
*res = ps_read(type, addr);
return 1;
}
if (move_slow_to_chip && addr >= 0xC00000 && addr <= 0xC7FFFF) {
// Block accesses through to trapdoor at slow ram address, otherwise it will be detected at 0x080000 and 0xC00000.
*res = 0;
return 1;
}
if (addr >= cfg->custom_low && addr < cfg->custom_high) {
if (addr >= PISCSI_OFFSET && addr < PISCSI_UPPER) {
*res = handle_piscsi_read(addr, type);
@@ -962,6 +998,7 @@ static inline int32_t platform_read_check(uint8_t type, uint32_t addr, uint32_t
return 1;
}
}
break;
default:
break;
@@ -1088,10 +1125,40 @@ static inline int32_t platform_write_check(uint8_t type, uint32_t addr, uint32_t
return 0;
break;
}
case CIABPRB:
if (swap_df0_with_dfx) {
if ((val & ((1 << (SEL0_BITNUM + swap_df0_with_dfx)) | 0x80)) == 0x80) {
// If drive selected but motor off, Amiga is reading drive ID.
spoof_df0_id = 1;
} else {
spoof_df0_id = 0;
}
if (((val >> SEL0_BITNUM) & 1) != ((val >> (SEL0_BITNUM + swap_df0_with_dfx)) & 1)) { // If the value for SEL0/SELx differ
val ^= ((1 << SEL0_BITNUM) | (1 << (SEL0_BITNUM + swap_df0_with_dfx))); // Invert both bits to swap them around
}
ps_write(type,addr,val);
return 1;
}
return 0;
break;
default:
break;
}
if (move_slow_to_chip && addr >= 0x080000 && addr <= 0x0FFFFF) {
// A500 JP2 connects Agnus' A19 input to A23 instead of A19 by default, and decodes trapdoor memory at 0xC00000 instead of 0x080000.
// We can move the trapdoor to chipram simply by rewriting the address.
addr += 0xB80000;
ps_write(type,addr,val);
return 1;
}
if (move_slow_to_chip && addr >= 0xC00000 && addr <= 0xC7FFFF) {
// Block accesses through to trapdoor at slow ram address, otherwise it will be detected at 0x080000 and 0xC00000.
return 1;
}
if (addr >= cfg->custom_low && addr < cfg->custom_high) {
if (addr >= PISCSI_OFFSET && addr < PISCSI_UPPER) {
handle_piscsi_write(addr, val, type);
@@ -1109,6 +1176,7 @@ static inline int32_t platform_write_check(uint8_t type, uint32_t addr, uint32_t
return 1;
}
}
break;
default:
break;

View File

@@ -7,6 +7,7 @@
#include "amiga-autoconf.h"
#include "amiga-registers.h"
#include "amiga-interrupts.h"
#include "gpio/ps_protocol.h"
#include "hunk-reloc.h"
#include "net/pi-net-enums.h"
#include "net/pi-net.h"
@@ -57,6 +58,10 @@ extern unsigned int a314_base;
extern int kb_hook_enabled;
extern int mouse_hook_enabled;
extern int swap_df0_with_dfx;
extern int spoof_df0_id;
extern int move_slow_to_chip;
#define min(a, b) (a < b) ? a : b
#define max(a, b) (a > b) ? a : b
@@ -523,6 +528,18 @@ void setvar_amiga(struct emulator_config *cfg, char *var, char *val) {
}
}
}
if CHKVAR("swap-df0-df") {
if (val && strlen(val) != 0 && get_int(val) >= 1 && get_int(val) <= 3) {
swap_df0_with_dfx = get_int(val);
printf("[AMIGA] DF0 and DF%d swapped.\n",swap_df0_with_dfx);
}
}
if CHKVAR("move-slow-to-chip") {
move_slow_to_chip = 1;
printf("[AMIGA] Slow ram moved to Chip.\n");
}
}
void handle_reset_amiga(struct emulator_config *cfg) {
@@ -531,14 +548,23 @@ void handle_reset_amiga(struct emulator_config *cfg) {
ac_z2_current_pic = 0;
ac_z3_current_pic = 0;
spoof_df0_id = 0;
DEBUG("[AMIGA] Reset handler.\n");
DEBUG("[AMIGA] AC done - Z2: %d Z3: %d.\n", ac_z2_done, ac_z3_done);
if (piscsi_enabled)
piscsi_refresh_drives();
amiga_clear_emulating_irq();
if (move_slow_to_chip) {
int agnus_rev = ((ps_read_16(0xDFF004) >> 8) & 0x6F);
if (agnus_rev != 0x20) {
move_slow_to_chip = 0;
printf("[AMIGA] Requested move slow ram to chip but 8372 Agnus not found - Disabling.\n");
}
}
amiga_clear_emulating_irq();
adjust_ranges_amiga(cfg);
}
@@ -581,6 +607,10 @@ void shutdown_platform_amiga(struct emulator_config *cfg) {
kick13_mode = 0;
cdtv_mode = 0;
swap_df0_with_dfx = 0;
spoof_df0_id = 0;
move_slow_to_chip = 0;
autoconfig_reset_all();
printf("[AMIGA] Platform shutdown completed.\n");
}

View File

@@ -36,12 +36,18 @@ void adjust_gayle_1200();
#define CIAAICR 0xBFED01
#define CIAACRA 0xBFEE01
#define CIAACRB 0xBFEF01
#define CIABPRA 0xBFD000
#define CIABPRB 0xBFD100
#define POTGOR 0xDFF016
#define SERDAT 0xDFF030
#define DMACON 0xDFF096
#define DMACONR 0xDFF002
#define SEL0_BITNUM 3
/* RAMSEY ADDRESSES */
#define RAMSEY_REG 0xDE0003 /* just a nibble, it should return 0x08 for defaults with 16MB */
#define RAMSEY_ID 0xDE0043 /* Either 0x0D or 0x0F (most recent version) */

View File

@@ -114,14 +114,14 @@ static struct Library __attribute__((used)) *init_device(uint8_t *seg_list asm("
for (int i = 0; i < NUM_UNITS; i++) {
uint16_t r = 0;
WRITESHORT(PISCSI_CMD_DRVNUM, (i * 10));
WRITESHORT(PISCSI_CMD_DRVNUM, (i));
dev_base->units[i].regs_ptr = PISCSI_OFFSET;
READSHORT(PISCSI_CMD_DRVTYPE, r);
dev_base->units[i].enabled = r;
dev_base->units[i].present = r;
dev_base->units[i].valid = r;
dev_base->units[i].unit_num = i;
dev_base->units[i].scsi_num = i * 10;
dev_base->units[i].scsi_num = i;
if (dev_base->units[i].present) {
READLONG(PISCSI_CMD_CYLS, dev_base->units[i].c);
READSHORT(PISCSI_CMD_HEADS, dev_base->units[i].h);
@@ -150,13 +150,13 @@ static uint8_t* __attribute__((used)) expunge(struct Library *dev asm("a6"))
static void __attribute__((used)) open(struct Library *dev asm("a6"), struct IOExtTD *iotd asm("a1"), uint32_t num asm("d0"), uint32_t flags asm("d1"))
{
//struct Node* node = (struct Node*)iotd;
int io_err = IOERR_OPENFAIL;
int io_err = TDERR_BadUnitNum;
//WRITESHORT(PISCSI_CMD_DEBUGME, 1);
int unit_num = 0;
WRITELONG(PISCSI_CMD_DRVNUM, num);
READLONG(PISCSI_CMD_DRVNUM, unit_num);
int unit_num = num;
//WRITELONG(PISCSI_CMD_DRVNUM, num);
//READLONG(PISCSI_CMD_DRVNUM, unit_num);
debugval(PISCSI_DBG_VAL1, unit_num);
debugval(PISCSI_DBG_VAL2, flags);

View File

@@ -165,7 +165,7 @@ next_partition:;
struct PartitionBlock *pb = (struct PartitionBlock *)block;
tmp = pb->pb_DriveName[0];
pb->pb_DriveName[tmp + 1] = 0x00;
DEBUG("[PISCSI] Partition %d: %s (%d)\n", cur_partition, pb->pb_DriveName + 1, pb->pb_DriveName[0]);
printf("[PISCSI] Partition %d: %s (%d)\n", cur_partition, pb->pb_DriveName + 1, pb->pb_DriveName[0]);
DEBUG("Checksum: %.8X HostID: %d\n", BE(pb->pb_ChkSum), BE(pb->pb_HostID));
DEBUG("Flags: %d (%.8X) Devflags: %d (%.8X)\n", BE(pb->pb_Flags), BE(pb->pb_Flags), BE(pb->pb_DevFlags), BE(pb->pb_DevFlags));
d->pb[cur_partition] = pb;
@@ -702,13 +702,11 @@ void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) {
break;
}
case PISCSI_CMD_DRVNUM:
if (val % 10 != 0) {
if (val > 6) {
piscsi_cur_drive = 255;
}
else
piscsi_cur_drive = val / 10;
if (piscsi_cur_drive > NUM_UNITS) {
piscsi_cur_drive = 255;
else {
piscsi_cur_drive = val;
}
if (piscsi_cur_drive != 255) {
DEBUG("[PISCSI] (%s) Drive number set to %d (%d)\n", op_type_names[type], piscsi_cur_drive, val);
@@ -760,7 +758,7 @@ void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) {
p_offs += 0x20;
PUTNODELONG(addr2 + cfg->map_offset[r]);
PUTNODELONG(data_addr + cfg->map_offset[r]);
PUTNODELONG((i * 10));
PUTNODELONG(i);
PUTNODELONG(0);
uint32_t nodesize = (be32toh(devs[i].pb[j]->pb_Environment[0]) + 1) * 4;
memcpy(dst_data + p_offs, devs[i].pb[j]->pb_Environment, nodesize);

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
../../rtg_driver_amiga/PiGFX.info

View File

@@ -0,0 +1 @@
../../rtg_driver_amiga/pigfx020.card

View File

@@ -0,0 +1 @@
../../rtg_driver_amiga/pigfx030.card

View File

@@ -6,127 +6,120 @@
(set @app-name "PiGFX")
(set @default-dest "Sys:")
;
(welcome "This installer will configure your Picasso96 installation for use with PiGFX RTG.\n\nAny old PiGFX card or monitor files that are detected will be removed.")
(welcome "This installer will configure your Picasso96 installation for use with PiGFX RTG.\n\nAny previous PiGFX card or monitor files that are detected will be removed.")
(complete 3)
(complete 2)
; Reminder to install P96
(message "Please ensure you have already installed Picasso96. You can choose any GFX board (or select none at all) during the install process as this will not be used. \n\nThe install process will ask for the location of the original Picasso96 files that you used to install it. Please make sure to have them available. "
(message "Please ensure you have already installed Picasso96. You do not need to choose any GFX board type during the install process as this installer will create the required files.\n\nThe install process will ask for the location of the original Picasso96 files that you used to install it. Please make sure to have them available. "
)
(complete 6)
(complete 3)
; Check if P96 is installed
(set #P96check
(exists "Sys:Prefs/Picasso96Mode" (noreq))
)
(complete 9)
; If Picasso96Mode exists
(complete 5)
; If Picasso96Mode does not exist
(if (= #P96check 0)
(
(complete 12)
(complete 7)
; Advise to install P96 and exit
(exit "Picasso96 does not appear to be installed.\n\nOnce Picasso96 has been installed, please re-run the PiGFX installer.")
(exit "Picasso96 does not appear to be installed.\n\nPlease install Picasso96 and re-run the PiGFX installer.")
)
) ; End If
(complete 15)
(complete 8)
; Advise of old file check
(message "The installer will now check for any previous PiGFX files and remove them if found."
)
(complete 10)
; Check if old PiGFX monitor file exists
(set #OldPiGFX
(exists "Devs:Monitors/PiGFX" (noreq))
)
(complete 18)
(complete 12)
; If old PiGFX monitor file exists
(if (= #OldPiGFX 1)
(
(complete 21)
; Warn that old PiGFX file will be removed
(message "An old PiGFX monitor file has been found in Devs:Monitors/\n\nThis will now be removed. "
)
(complete 24)
(complete 13)
; Delete old PiGFX file
(delete "Devs:Monitors/PiGFX"
(prompt "Deleting old PiGFX monitor file.")
(prompt "An existing PiGFX monitor file has been detected in Devs:Monitors/ and will be deleted.")
(help "A previous version of the PiGFX monitor file has been detected in Devs:Monitors/ and will be removed.")
(confirm "average")
(infos)
(optional "askuser")
)
)
) ; End If
(complete 26)
; Check if old pigfx020 card file exists
(complete 15)
; Check if old pigfx020 card file exists
(set #Old020card
(exists "Libs:Picasso96/pigfx020.card" (noreq))
)
(complete 29)
(complete 17)
; If old pigfx020 card file exists
(if (= #Old020card 1)
(
(complete 32)
; Warn that old pigfx020 card file will be removed
(message "An old pigfx020.card file has been found in Libs:Picasso96/\n\nThis will now be removed. "
)
(complete 35)
(complete 18)
; Delete old pigfx020 card file
(delete "Libs:Picasso96/pigfx020.card"
(prompt "Deleting old PiGFX monitor file.")
(prompt "An existing pigfx020.card file has been detected in Libs:Picasso96/ and will be deleted.")
(help "A previous version of the pigfx020.card file has been detected in Libs:Picasso96/ and will be removed.")
(confirm "average")
(infos)
(optional "askuser")
)
)
) ; End If
(complete 38)
(complete 20)
; Check if old pigfx030 card file exists
(set #Old030card
(exists "Libs:Picasso96/pigfx030.card" (noreq))
)
(complete 41)
(complete 22)
; If old pigfx030 card file exists
(if (= #Old030card 1)
(
(complete 44)
; Warn that old pigfx030 card file will be removed
(message "An old pigfx030.card file has been found in Libs:Picasso96/\n\nThis will now be removed. "
)
(complete 47)
(complete 23)
; Delete old pigfx030 card file
(delete "Libs:Picasso96/pigfx030.card"
(prompt "Deleting old PiGFX monitor file.")
(prompt "An existing pigfx030.card file has been detected in Libs:Picasso96/ and will be deleted.")
(help "A previous version of the pigfx030.card file has been detected in Libs:Picasso96/ and will be removed.")
(confirm "average")
(infos)
(optional "askuser")
)
)
) ; End If
(complete 50)
(complete 25)
; Check if P96Settings exists
(set #P96settingsold
(exists "Devs:Picasso96Settings" (noreq))
)
(complete 53)
(complete 27)
; If P96Settings exists
(if (= #P96settingsold 1)
(
(complete 56)
(complete 28)
; Backup or delete old settings
(set #backupoptions
(askchoice
(prompt "Do you wish to backup your old Picasso96Settings file to Picasso96Settings.old.\n\nIf you select \"No\" then your settings file will be deleted.")
(prompt "An existing Picasso96Settings file has been detected in Devs:\n\nDo you wish to backup your old Devs:Picasso96Settings file to Devs:Picasso96Settings.old\n\nIf you select \"No\" then your settings file will be deleted.")
(help "There is already an existing Picasso96Settings file located in Devs: \n\nPlease choose if to backup this file to Picasso96Settings.old or if it can be deleted.")
(choices "Yes" "No")
(default 0)
@@ -137,12 +130,12 @@
)
) ; End If
(complete 59)
(complete 30)
; Backup old settings
(if (= #P96backup 1)
(
(complete 62)
(complete 32)
; Check for old settings backup
(set #P96settingsbackupold
(exists "Devs:Picasso96Settings.old" (noreq))
@@ -150,46 +143,56 @@
)
) ; End If
(complete 65)
(complete 33)
; If old P96Settings backup already exists
(if (= #P96settingsbackupold 1)
(
(complete 68)
(complete 35)
; Delete old P96Settings backup
(delete (tackon @default-dest "Devs/Picasso96Settings.old")
(prompt "Delting old Picasso96Settings.old file. ")
(help "The old back up of the Picasso96Settings file has been detected and will now be removed.")
(prompt "An existing Picasso96Settings.old file has been found in Devs: and will be deleted.\n\nIf you wish to keep this, please back it up before proceeding.")
(help "A Picasso96Settings.old file has been detected in Devs: and will be deleted.\n\nIf you wish to keep this, please back it up before proceeding.")
(confirm "average")
(infos)
(optional "askuser")
)
)
) ; End If
(complete 71)
; Create P96settings backup
(rename "Devs:Picasso96Settings" "Devs:Picasso96Settings.old"
(prompt "Creating backup of previous Picasso96Settings.")
(help )
)
(complete 74)
; If ok to delete old P96Settings
(if (= #P96settingsdelete 1)
(complete 30)
; Backup old settings
(if (= #P96backup 1)
(
(complete 76)
(complete 37)
; Create P96settings backup
(rename "Devs:Picasso96Settings" "Devs:Picasso96Settings.old"
(prompt "A backup of your old Picasso96Settings called Picasso96Settings.old will be created in Devs:\n")
(help "Your old Picasso96Settings file will be backed up to Devs:Picasso96Settings.old")
(confirm "average")
)
)
) ; End If
(complete 38)
; If ok to delete old P96Settings
(if (= #P96delete 1)
(
(complete 40)
; Delete old P96Settings file
(delete "Devs:Picasso96Settings"
(prompt "Deleting old Picasso96Settings file.")
(prompt "Your old Picasso96Settings file will now be deleted. ")
(help "An old Picasso96Settings file has been detected in Devs: and will now be deleted.")
(confirm "average")
(infos)
(optional "askuser")
)
)
) ; End If
(complete 79)
(complete 42)
; Locate original P96 install files
(set #P96files
(askdir
@@ -199,70 +202,147 @@
)
)
(complete 82)
(complete 43)
; Advise PiGFX card files will be copied
(message "The PiGFX card files will now be copied to Libs:Picasso96/"
)
(complete 45)
; Copy PiGFX card files
(copyfiles
(prompt "Copying PiGFX card files to Libs: ")
(help @copyfiles-help)
(help "The PiGFX card files that are required will be copied to Libs:")
(source "")
(dest "Libs:Picasso96")
(choices "Files/pigfx020.card" "Files/pigfx030.card")
)
(complete 85)
; Warn about temporary assign to install files
(message "A temporary assign called P96Temp: will be created to locate the original Picasso96 files. This will be removed once you reboot. "
(complete 47)
; Check if new pigfx020 card file exists
(set #New020card
(exists "Libs:Picasso96/pigfx020.card" (noreq))
)
(complete 88)
(complete 48)
; If new pigfx020 card file does not exist
(if (= #New020card 0)
(
(complete 50)
; Advise pigfx020 card file could not be copied and exit
(exit "The pigfx020.card file was unable to be copied.\n\nPlease try and run the installer again.")
)
) ; End If
(complete 52)
; Check if new pigfx030 card file exists
(set #New030card
(exists "Libs:Picasso96/pigfx030.card" (noreq))
)
(complete 53)
; If new pigfx030 card file does not exist
(if (= #New030card 0)
(
(complete 55)
; Advise pigfx030 card file could not be copied and exit
(exit "The pigfx030.card file was unable to be copied.\n\nPlease try and run the installer again.")
)
) ; End If
(complete 57)
; Make temporary assign to P96 install files
(makeassign "P96Temp" #P96files)
(complete 58)
; Check original p96settings exists
(set #OriginalP96settings
(exists "P96Temp:devs/Picasso96Settings.15" (noreq))
)
(complete 60)
; If original P96settings does not exist
(if (= #OriginalP96settings 0)
(
(complete 62)
; Remove temporary assign
(run "Assign" "P96Temp:" "Dismount"
(prompt "Removing temporary assign")
(help "This will remove the temporary P96Temp: assign that was previously created.")
)
(complete 63)
; Advise original settings cannot be found
(exit "The original Picasso96Settings file that is required to create the PiGFX settings file cannot be located.\n\nPlease ensure you set the correct path to the original installation files, and are using a compatible version of Picasso96 from Aminet or Individual Computers. Please see Readme.txt for more information.")
)
) ; End If
(complete 65)
; Check original monitor file exists
(set #OriginalP96monitor
(exists "P96Temp:devs/monitors/Picasso96" (noreq))
)
(complete 67)
; If original monitor file does not exist
(if (= #OriginalP96monitor 0)
(
(complete 68)
; Remove temporary assign
(run "Assign" "P96Temp:" "Dismount"
(prompt "Removing temporary assign")
(help "This will remove the temporary P96Temp: assign that was previously created.")
)
(complete 70)
; Advise original monitor cannot be found
(exit "The original Picasso96 monitor file that is required to create the PiGFX monitor file cannot be located.\n\nPlease ensure you set the correct path to the original installation files, and are using a compatible version of Picasso96 from Aminet or Individual Computers. Please see Readme.txt for more information.")
)
) ; End If
(complete 91)
; Patching P96 monitor file
(run "Patch/gpatch" "P96Temp:devs/monitors/Picasso96" "Patch/PiGFX.patch" "Devs:Monitors/PiGFX"
(prompt "Patching original Picasso monitor file to create PiGFX monitor file in Devs:Monitors/")
(help "A PiGFX monitor file will be created by patching one of the original monitor files.")
(confirm "average")
(complete 72)
; Advise creating PiGFX monitor file
(message "The PiGFX monitor file will now be created in Devs:Monitors/"
)
(complete 94)
; Patching P96Settings file
(run "Patch/gpatch" "P96Temp:devs/Picasso96Settings.15" "Patch/P96Settings.patch" "Devs:Picasso96Settings"
(prompt "Patching original Picasso96Settings file and creating PiGFX Devs:Picasso96Settings file. ")
(help "A new Picasso96Settings file for PiGFX will be created by patching on of the original settings files. ")
(confirm "average")
(complete 73)
; Create PiGFX Monitor File
(copyfiles
(source "P96Temp:devs/monitors/Picasso96")
(dest "Devs:Monitors")
(newname "PiGFX")
(prompt "Creating the PiGFX monitor file in Devs:/Monitors/")
(help "This will copy the original Picasso96 monitor file to Devs:Monitors/ and rename it to PiGFX")
)
(complete 97)
(complete 75)
; Check PiGFX monitor file has been created
(set #NewPiGFX
(exists "Devs:Monitors/PiGFX" (noreq))
)
(complete 77)
; If new PiGFX does not exist
(if (= #NewPiGFX 0)
(
(complete 78)
; Remove temporary assign
(run "Assign" "P96Temp:" "Dismount"
(prompt "Removing temporary assign")
(help "This will remove the temporary P96Temp: assign that was previously created.")
)
(complete 80)
; Advise monitor file could not be created and exit
(exit "The PiGFX monitor file was unable to be created. \n\nPlease try and run the installer again.\nPlease ")
)
) ; End If
(complete 82)
; Copy PiGFX icon
(copyfiles
(prompt "Copying the PiGFX icon and tooltypes to Devs:Monitors/")
@@ -272,7 +352,71 @@
(choices "Files/PiGFX.info")
)
; Reminder to enable RTG
(message "Remember to enable RTG in the PiStorm default.cfg file."
(complete 83)
; Check PiGFX.info file has been created
(set #NewPiGFXInfo
(exists "Devs:Monitors/PiGFX.info" (noreq))
)
(complete 85)
; If new PiGFX.info does not exist
(if (= #NewPiGFXInfo 0)
(
(complete 87)
; Remove temporary assign
(run "Assign" "P96Temp:" "Dismount"
(prompt "Removing temporary assign")
(help "This will remove the temporary P96Temp: assign that was previously created.")
)
(complete 88)
; Advise info file could not be copied and exit
(exit "The PiGFX.info file was unable to be copied. \n\nPlease try and run the installer again.\nPlease ")
)
) ; End If
(complete 90)
; Patching P96Settings file
(run "Patch/gpatch" "P96Temp:devs/Picasso96Settings.15" "Patch/P96Settings.patch" "Devs:Picasso96Settings"
(prompt "Patching original Picasso96Settings and creating new PiGFX Picasso96Settings file in Devs: ")
(help "A new Picasso96Settings file for PiGFX will be created in Devs: by patching on of the original settings files. ")
(confirm "average")
)
(complete 92)
; Check Picasso96Settings has been created
(set #NewP96Settings
(exists "Devs:Picasso96Settings" (noreq))
)
(complete 93)
; If new Picasso96Settings does not exist
(if (= #NewP96Settings 0)
(
(complete 95)
; Remove temporary assign
(run "Assign" "P96Temp:" "Dismount"
(prompt "Removing temporary assign")
(help "This will remove the temporary P96Temp: assign that was previously created.")
)
(complete 97)
; Advise P96Settings file could not be created and exit
(exit "The Picasso96Settings file was unable to be created. \n\nPlease try and run the installer again.\nPlease ")
)
) ; End If
(complete 98)
; Remove temporary assign
(run "Assign" "P96Temp:" "Dismount"
(prompt "Removing temporary assign")
(help "This will remove the temporary P96Temp: assign that was previously created.")
)
(complete 100)
; Exit and reminder to enable RTG
(message "Please remember to enable RTG in your PiStorm config file."
)

View File

@@ -4,9 +4,10 @@ PiGFX RTG Installer
Unfortunately, there are some Picasso96 settings files required to use
PiGFX RTG on PiStorm that are not able to be freely distributed.
This installer will patch files from the original install folder to
create the required monitor file and settings files. This will save
you having to create these and setting up all the resolutions manually.
This installer will patch and copy some files from the original install
folder to create the required monitor file and settings files. This will
save you having to create these and setting up all the resolutions
manually.
The card files currently in the installer are from the WIP-crap branch
as of 3rd June 2021.
@@ -24,10 +25,8 @@ will be created.
The installer will also require access to the original installation
files that are located in the folder from where you installed Picasso96.
At the time of writing, the below versions of Picasso96 are supported.
Please ensure that you are using one of these exact versions, and do not
modify the folder in any way. The installer requires the files to be in
their original locations.
At the time of writing, the below versions of Picasso96 are have been
tested, but other versions may work.
Picasso96 v2.0 - This can be downloaded freely from Aminet here -
https://aminet.net/package/driver/video/Picasso96
@@ -36,9 +35,15 @@ Picasso96 v3.02 - This can be purchased from Individual Computers for
a small fee, and at the time of writing the latest
version is v3.02.
Any future versions may require a new patch file to be created. If/when
IComp do release any future updates, the patch files will be updated
accordingly if required.
If you have any issues during the installation, please try using one of
these versions, and do not modify the folder in any way. The installer
requires the files to be in their original
locations.
Any future versions of Picasso96 may require a new patch file to be
created. If/whenIComp do release any future updates, the patch files
will be updated accordingly if required.
Installation
============