/* Copyright 2009 WiiGator. */
#include "plugin.h"
#include "dvd.h"
#include "dvdaudiostatus_orig.h"
#include "dvdreadid_orig.h"
#include "dvdread_orig.h"
#include "dvdreporterror_orig.h"
#include "dvdreset_orig.h"
#include "dvdstopmotor_orig.h"
#include "stream.h"
#include "pluginprotector.h"


gcplugin_jumptable_t jumptable[] = {
	{
	.dvd_read_replacement = dvd_read_replacement1,
	.dvd_read_orig = dvd_read_orig1,
	.dvd_read_id_replacement = dvd_read_id_replacement1,
	.dvd_read_id_orig = dvd_read_id_orig1,
	.dvd_report_error_replacement = dvd_report_error_replacement1,
	.dvd_report_error_orig = dvd_report_error_orig1,
	.dvd_audio_status_replacement = dvd_audio_status_replacement1,
	.dvd_audio_status_orig = dvd_audio_status_orig1,
	.dvd_read_audio_replacement = dvd_read_audio_replacement1,
	.dvd_audio_config_replacement = dvd_audio_config_replacement1,
#ifndef MIOS_PLUGIN
	.memset_replacement = memset_replacement1,
	.memset_orig = memset_orig1,
#endif
	.dvd_seek_replacement = dvd_seek_replacement1,
#ifdef ACTION_REPLAY
	.ar_dvd_read_replacement = ar_dvd_read_replacement1,
	.ar_dvd_read_disk_id_replacement = ar_dvd_read_disk_id_replacement1,
#endif

#ifdef GEKKO_DEBUG
#ifdef FULL_PATCH
	.dvd_reset_replacement = dvd_reset_replacement1,
	.dvd_reset_orig = dvd_reset_orig1,
#endif
#if defined(MIOS_PLUGIN) || defined(HIGH_PLUGIN) /* Only enough memory in MIOS and high plugin. */
	.dvd_stop_motor_replacement = dvd_stop_motor_replacement1,
	.dvd_stop_motor_orig = dvd_stop_motor_orig1,
#endif
#ifdef REPLACE_DVD_CALLBACK
	.dvd_callback_entry dvd_callback_entry1,
#endif
	.stream_write_replacement = stream_write_replacement1,
#ifdef MIOS_PLUGIN
	.printf_replacement = printf_replacement1,
#endif
#ifndef MIOS_PLUGIN
#ifdef ACTION_REPLAY
	.ar_stream_write_replacement = ar_stream_write_replacement1,
	.ar_stream_write_orig = ar_stream_write_orig1,
#endif
#endif
#ifdef RELOAD_SUPPORT
//	.magic = RELOAD_MAGIC,
#endif
#endif
	},
#ifdef RELOAD_SUPPORT
	{
	.dvd_read_replacement = dvd_read_replacement2,
	.dvd_read_orig = dvd_read_orig2,
	.dvd_read_id_replacement = dvd_read_id_replacement2,
	.dvd_read_id_orig = dvd_read_id_orig2,
	.dvd_report_error_replacement = dvd_report_error_replacement2,
	.dvd_report_error_orig = dvd_report_error_orig2,
	.dvd_audio_status_replacement = dvd_audio_status_replacement2,
	.dvd_audio_status_orig = dvd_audio_status_orig2,
	.dvd_read_audio_replacement = dvd_read_audio_replacement2,
	.dvd_audio_config_replacement = dvd_audio_config_replacement2,
#ifndef MIOS_PLUGIN
	.memset_replacement = memset_replacement2,
	.memset_orig = memset_orig2,
#endif
	.dvd_seek_replacement = dvd_seek_replacement2,

#ifdef GEKKO_DEBUG
#ifdef FULL_PATCH
	.dvd_reset_replacement = dvd_reset_replacement2,
	.dvd_reset_orig = dvd_reset_orig2,
#endif
#if defined(MIOS_PLUGIN) || defined(HIGH_PLUGIN) /* Only enough memory in MIOS and high plugin. */
	.dvd_stop_motor_replacement = dvd_stop_motor_replacement2,
	.dvd_stop_motor_orig = dvd_stop_motor_orig2,
#endif
#ifdef REPLACE_DVD_CALLBACK
	.dvd_callback_entry dvd_callback_entry2,
#endif
	.stream_write_replacement = stream_write_replacement2,
#endif
	}
#endif
};

unsigned long base_offset = 0x11111111;
unsigned long base_offset_2nd_disc = 0x22222222;

#ifdef RELOAD_SUPPORT
unsigned long reloader_enabled = 0x33333333;
/** Current jumptable used. */
int jmpNr = 0;
#endif

#ifdef DONTTELL
unsigned long hooks = 0x44444444;
u32 hook[8] = { 0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x55555555 };
#endif

#ifdef ACTION_REPLAY
unsigned long action_replay = 0;
#endif



