//#include "projects:Dizzer_II/global.h"
#include <exec/types.h>
#include <exec/memory.h>
#include <stdio.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>
#include <clib/diskfont_protos.h>

static ULONG __saveds __asm NewDisplayBeep( register __a0 struct Screen *);
// static ULONG __saveds __asm OldDisplayBeep( register __a0 struct Screen *);

extern struct IntuitionBase *IntuitionBase;

main(void )
{  
   ULONG (*function)(struct Screen *);
   function=NewDisplayBeep;
   printf("About To SetFunction() Patch Intuition Display BEEP From %p yp %p\n",DisplayBeep,NewDisplayBeep);
   
   SetFunction((struct Library *)IntuitionBase,-0x0000060,function);
   Wait(0);
   DisplayBeep(0);
   printf("The Patch Has been Applied OK\n"); 
    
 }


static ULONG __saveds __asm NewDisplayBeep( register __a0 struct Screen *The_Screen)
{
    struct EasyStruct *Easy;
    char Title[] = "Patched OK";
    char Message[] = "Some Function Has Called DisplayBeep()";
    char Gadgets[] = "Funky";
    ULONG Bob;
    
    Easy = AllocMem(sizeof(struct EasyStruct),MEMF_ANY);
    Easy->es_StructSize=sizeof(struct EasyStruct);
    Easy->es_Flags=0;
    Easy->es_Title=(unsigned char *)&Title;
    Easy->es_GadgetFormat=(unsigned char*)&Gadgets;
    Easy->es_TextFormat=(unsigned char *)&Message;
    EasyRequest( 0 , Easy, 0,0 );   
    FreeMem(Easy,sizeof(struct EasyStruct));
    return(Bob);
}
    
    