+++ /dev/null
-NAME PCDR\r
-\r
-#include <eikon.rh>\r
-#include <eikon.rsg>\r
-#include <qikon.rh>\r
-#include <qikcommand.rh>\r
-#include "picodrive.hrh"\r
-\r
-\r
-RESOURCE RSS_SIGNATURE { }\r
-\r
-// Defines the name of the default file the application framework creates.\r
-// This resource must always be the second resource in the resource file.\r
-RESOURCE TBUF { buf = "PicoDrive"; }\r
-\r
-RESOURCE EIK_APP_INFO { }\r
-\r
-\r
-// A view shall use the QIK_VIEW_CONFIGURATIONS resource struct to define which \r
-// UI configurations it supports. Can also use QIK_VIEW_CONFIGURATIONS to setup \r
-// the view to switch layout and command list automatically when changes of UI \r
-// configuration occur. This is done with the view and command_list members of \r
-// the QIK_VIEW_CONFIGURATIONS.\r
-// The application supports the reference UI Configurations that are supported\r
-// in the UIQ 3 SDK. Use the UiqEnv tool, to change the UI Configuration in the\r
-// emulator in order to develop and test the application with varying phone styles.\r
-RESOURCE QIK_VIEW_CONFIGURATIONS r_app_ui_configurations\r
-{\r
- configurations = \r
- {\r
- QIK_VIEW_CONFIGURATION\r
- {\r
- ui_config_mode = KQikPenStyleTouchPortrait;\r
- command_list = r_app_commands;\r
- view = r_app_layout;\r
- },\r
- QIK_VIEW_CONFIGURATION\r
- {\r
- ui_config_mode = KQikPenStyleTouchLandscape;\r
- command_list = r_app_commands;\r
- view = r_app_layout;\r
- },\r
- QIK_VIEW_CONFIGURATION\r
- {\r
- ui_config_mode = KQikSoftkeyStyleTouchPortrait;\r
- command_list = r_app_commands;\r
- view = r_app_layout;\r
- },\r
- QIK_VIEW_CONFIGURATION\r
- {\r
- ui_config_mode = KQikSoftkeyStylePortrait;\r
- command_list = r_app_commands;\r
- view = r_app_layout;\r
- },\r
- QIK_VIEW_CONFIGURATION\r
- {\r
- ui_config_mode = KQikSoftkeyStyleSmallPortrait;\r
- command_list = r_app_commands;\r
- view = r_app_layout;\r
- }\r
- };\r
-}\r
-\r
-// Commands are defined with the QIK_COMMAND_LIST struct, \r
-// commands can also be created in code by instantiating CQikCommand.\r
-// The control command id for debug command is a reserved id from uikon.hrh.\r
-// The id for each command is defined in the .hrh file.\r
-RESOURCE QIK_COMMAND_LIST r_app_commands\r
-{\r
- items = \r
- {\r
-// QIK_COMMAND { id=EEikCmdPicoMain; text="Main"; type=EQikCommandTypeDone; namedGroupLinkId=EEikCmdPicoMain; },\r
-// QIK_COMMAND { id=EEikCmdPicoDebugInfo; text="Debug info"; type=EQikCommandTypeScreen; stateFlags=EQikCmdFlagDebugOnly; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskip; text="Frameskip"; type=EQikCommandTypeScreen; namedGroupLinkId=EEikCmdPicoFrameskip; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskipAuto; text="Auto"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoFrameskip;\r
- groupId=EEikCmdPicoFrameskip; stateFlags=EQikCmdFlagRadioStart; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskip0; text="0"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoFrameskip;\r
- groupId=EEikCmdPicoFrameskip0; stateFlags=EQikCmdFlagRadioMiddle; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskip1; text="1"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoFrameskip;\r
- groupId=EEikCmdPicoFrameskip0; stateFlags=EQikCmdFlagRadioMiddle; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskip2; text="2"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoFrameskip;\r
- groupId=EEikCmdPicoFrameskip0; stateFlags=EQikCmdFlagRadioMiddle; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskip4; text="4"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoFrameskip;\r
- groupId=EEikCmdPicoFrameskip0; stateFlags=EQikCmdFlagRadioMiddle; },\r
- QIK_COMMAND { id=EEikCmdPicoFrameskip8; text="8"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoFrameskip;\r
- groupId=EEikCmdPicoFrameskip0; stateFlags=EQikCmdFlagRadioEnd; },\r
- QIK_COMMAND { id=EEikCmdPicoConfig; text="Configure"; type=EQikCommandTypeScreen; namedGroupLinkId=EEikCmdPicoConfig; },\r
- QIK_COMMAND { id=EEikCmdPicoKeys; text="Keys"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoConfig; },\r
- QIK_COMMAND { id=EEikCmdPicoSettings; text="Settings"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoConfig; },\r
- QIK_COMMAND { id=EEikCmdHelpAbout; text="About"; type=EQikCommandTypeScreen; namedGroupId=EEikCmdPicoConfig; },\r
-\r
- QIK_COMMAND { id=EEikCmdPicoLoadROM; text="Load new ROM/ISO";type=EQikCommandTypeScreen; groupId=EEikCmdPicoResume; },\r
- QIK_COMMAND { id=EEikCmdPicoReset; text="Reset game"; type=EQikCommandTypeScreen; groupId=EEikCmdPicoResume; },\r
- QIK_COMMAND { id=EEikCmdPicoLoadState; text="Load state"; type=EQikCommandTypeScreen; groupId=EEikCmdPicoResume; },\r
- QIK_COMMAND { id=EEikCmdPicoSaveState; text="Save state"; type=EQikCommandTypeScreen; groupId=EEikCmdPicoResume; },\r
- QIK_COMMAND { id=EEikCmdPicoResume; text="Resume game"; type=EQikCommandTypeScreen; groupId=EEikCmdPicoResume; cpfFlags=EQikCpfFlagIsDefault; },\r
-\r
- QIK_COMMAND { id=EEikCmdExit; text="Exit"; type=EQikCommandTypeScreen; groupId=EEikCmdExit; }\r
- };\r
-}\r
-\r
-\r
-// Defines the view by linking to the pages.\r
-RESOURCE QIK_VIEW r_app_layout\r
-{\r
- pages = {};\r
-}\r
-\r
-\r
-/**************************************\r
- *\r
- * config dialog\r
- *\r
- **************************************/\r
-\r
-RESOURCE DIALOG r_pico_config\r
-{\r
- title = "Settings";\r
- buttons = R_EIK_BUTTONS_CANCEL_OK;\r
- flags = EEikDialogFlagWait;\r
- pages = r_pico_config_pages;\r
-}\r
-\r
-RESOURCE ARRAY r_pico_config_pages\r
-{\r
- items = {\r
- PAGE\r
- {\r
- id = ECtlOptPageMain;\r
- text = "Main";\r
- lines = r_pico_config_page_main;\r
- },\r
- PAGE\r
- {\r
- id = ECtlOptPageSound;\r
- text = "Sound";\r
- lines = r_pico_config_page_sound;\r
- },\r
- PAGE\r
- {\r
- id = ECtlOptPageMCD;\r
- text = "MegaCD";\r
- lines = r_pico_config_page_mcd;\r
- },\r
- PAGE\r
- {\r
- id = ECtlOptPageMisc;\r
- text = "Misc";\r
- lines = r_pico_config_page_misc;\r
- }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_page_main\r
-{\r
- items = {\r
- DLG_LINE\r
- {\r
- id = ECtlOptRotationLabel;\r
- type = EEikCtLabel;\r
- prompt = "Screen Rotation";\r
- control = LABEL { horiz_align = EEikLabelAlignHLeft; };\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptRotation;\r
- type = EEikCtHorOptionButList;\r
- control = HOROPBUT\r
- {\r
- array_id = r_pico_config_rotation_buttons;\r
- };\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptScreenModeLabel;\r
- type = EEikCtLabel;\r
- prompt = "Screen Mode";\r
- control = LABEL { horiz_align = EEikLabelAlignHLeft; };\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptScreenMode;\r
- type = EEikCtHorOptionButList;\r
- control = HOROPBUT\r
- {\r
- array_id = r_pico_config_screenmode_buttons;\r
- };\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptUseAltRend;\r
- type = EEikCtCheckBox;\r
- prompt = "Fast renderer (inaccurate)";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptShowFPS;\r
- type = EEikCtCheckBox;\r
- prompt = "Show FPS";\r
- }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_page_sound\r
-{\r
- items = {\r
- DLG_LINE\r
- {\r
- id = ECtlOptEnableSound;\r
- type = EEikCtCheckBox;\r
- prompt = "Enable sound";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptChipSelLabel;\r
- type = EEikCtLabel;\r
- prompt = "Emulate these sound chips:";\r
- control = LABEL { horiz_align = EEikLabelAlignHLeft; };\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptEmulateZ80;\r
- type = EEikCtCheckBox;\r
- prompt = "Z80";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptEmulateYM2612;\r
- type = EEikCtCheckBox;\r
- prompt = "YM2612";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptEmulateSN76496;\r
- type = EEikCtCheckBox;\r
- prompt = "SN76496 (PSG)";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptSndQLabel;\r
- type = EEikCtLabel;\r
- prompt = "Quality (lowest is fastest)";\r
- control = LABEL { horiz_align = EEikLabelAlignHLeft; };\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptSndQuality;\r
- type = EEikCtChoiceList;\r
- prompt = "";\r
- control = CHOICELIST { array_id = r_pico_config_snd_quality; };\r
- itemflags = EEikDlgItemNonFocusing;\r
- }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_page_mcd\r
-{\r
- items = {\r
- DLG_LINE\r
- {\r
- id = ECtlOptCDcdda;\r
- type = EEikCtCheckBox;\r
- prompt = "CDDA audio";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptCDpcm;\r
- type = EEikCtCheckBox;\r
- prompt = "PCM audio";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptCDramcart;\r
- type = EEikCtCheckBox;\r
- prompt = "SaveRAM cart";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptCDscalerot;\r
- type = EEikCtCheckBox;\r
- prompt = "Scale/Rot. fx (slow)";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptCDbettersync;\r
- type = EEikCtCheckBox;\r
- prompt = "Better sync (slow)";\r
- }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_page_misc\r
-{\r
- items = {\r
- DLG_LINE\r
- {\r
- id = ECtlOpt6ButtonPad;\r
- type = EEikCtCheckBox;\r
- prompt = "6 button pad";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptGzipStates;\r
- type = EEikCtCheckBox;\r
- prompt = "gzip save states";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptUseSRAM;\r
- type = EEikCtCheckBox;\r
- prompt = "Use SRAM saves (.srm)";\r
- },\r
- DLG_LINE\r
- {\r
- id = ECtlOptRegion;\r
- type = EEikCtChoiceList;\r
- prompt = "Region:";\r
- control = CHOICELIST { array_id = r_pico_config_region; };\r
- itemflags = EEikDlgItemNonFocusing;\r
- }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_rotation_buttons\r
-{\r
- items = {\r
- OPBUT { id = ECtlOptRotation0; text = "0º"; },\r
- OPBUT { id = ECtlOptRotation90; text = "90º"; },\r
- OPBUT { id = ECtlOptRotation180; text = "180º"; },\r
- OPBUT { id = ECtlOptRotation270; text = "270º"; }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_screenmode_buttons\r
-{\r
- items = {\r
- OPBUT { id = ECtlOptScreenModeCenter; text = "Center"; },\r
- OPBUT { id = ECtlOptScreenModeFit; text = "Fit"; },\r
- OPBUT { id = ECtlOptScreenModeFit2; text = "Fit2"; }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_snd_quality\r
-{\r
- items = {\r
- LBUF { txt = "8000Hz mono"; },\r
- LBUF { txt = "11025Hz mono"; },\r
- LBUF { txt = "16000Hz mono"; },\r
- LBUF { txt = "22050Hz mono"; },\r
- LBUF { txt = "44100Hz mono"; },\r
- LBUF { txt = "8000Hz stereo"; },\r
- LBUF { txt = "11025Hz stereo"; },\r
- LBUF { txt = "16000Hz stereo"; },\r
- LBUF { txt = "22050Hz stereo"; },\r
- LBUF { txt = "44100Hz stereo"; }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_config_region\r
-{\r
- items = {\r
- LBUF { txt = "Auto"; },\r
- LBUF { txt = "Europe"; },\r
- LBUF { txt = "USA"; },\r
- LBUF { txt = "Japan PAL"; },\r
- LBUF { txt = "Japan NTSC"; }\r
- };\r
-}\r
-\r
-\r
-/**************************************\r
- *\r
- * about dialog\r
- *\r
- **************************************/\r
-\r
-// A simple dialog shall use the QIK_DIALOG resource struct to \r
-// define which UI configurations it supports.\r
-RESOURCE QIK_DIALOG r_pico_about\r
-{\r
- title = "About";\r
- configurations = \r
- {\r
- QIK_DIALOG_CONFIGURATION\r
- {\r
- ui_config_mode = 0;\r
- container = r_pico_about_container;\r
- command_list = r_pico_about_commands;\r
- }\r
- };\r
- controls = r_pico_about_controls;\r
-}\r
-\r
-RESOURCE QIK_COMMAND_LIST r_pico_about_commands\r
-{\r
- items=\r
- {\r
- QIK_COMMAND\r
- {\r
- id = EEikCmdPicoAboutDoneCmd;\r
- type = EQikCommandTypeDone;\r
- text = "Done";\r
- },\r
- QIK_COMMAND\r
- {\r
- id = EEikCmdPicoAboutCreditsCmd;\r
- type = EQikCommandTypeItem;\r
- text = "Credits";\r
- }\r
- };\r
-}\r
- \r
-// A collection of controls that can be used throughout the various \r
-// view/container/building block structs by using the unique handle in \r
-// QIK_CONTROL. So you can specify how the control should be created here and \r
-// just reference to it from other places.\r
-RESOURCE QIK_CONTROL_COLLECTION r_pico_about_controls\r
-{\r
- items = \r
- {\r
- QIK_CONTROL\r
- {\r
- unique_handle = ECtlPicoAboutText;\r
- type = EEikCtRichTextEditor;\r
- control = r_pico_about_rtxted;\r
- itemflags = EQikCtrlFlagIsEditInPlace;\r
- }\r
- };\r
-}\r
-\r
-// the controls themselves\r
-RESOURCE RTXTED r_pico_about_rtxted\r
-{\r
- flags = EEikEdwinDisplayOnly|EEikEdwinReadOnly|EEikEdwinNoHorizScrolling;\r
- numlines = 13;\r
- displayMode = 1; // EDisplayModeView;\r
-}\r
-\r
-// Defines the content of the simple dialog and how they are laid out. \r
-// Default layout manager is used for laying out the controls, which is a row \r
-// layout.\r
-RESOURCE QIK_CONTAINER_SETTINGS r_pico_about_container\r
-{\r
- controls = \r
- {\r
- QIK_CONTAINER_ITEM_CI_LI\r
- {\r
- type = EQikCtOnelineBuildingBlock;\r
- control = r_pico_about_bb1;\r
- }\r
- };\r
-}\r
- \r
-// Building block that contains the label.\r
-RESOURCE QIK_SYSTEM_BUILDING_BLOCK r_pico_about_bb1\r
-{\r
- content =\r
- {\r
- QIK_SLOT_CONTENT\r
- {\r
- slot_id = EQikItemSlot1;\r
- unique_handle = ECtlPicoAboutText;\r
- }\r
- };\r
-}\r
-\r
-RESOURCE TBUF r_pico_text_about\r
-{\r
- buf= \r
- "<f=Polo><s=26><a=center><fg=RgbDarkBlue>PicoDrive"\\r
- "<p><f=Polo><s=10><a=center>for UIQ3"\\r
- "<p><s=6> <p><f=Corinna><s=12>Version %S, by notaz."\\r
- "<p><s=5> <p><s=10>Port based on UIQ2 version, which is based on PicoDrive 0.030 for Pocket PC by Dave"\\r
- "<p><s=5> <p><f=Corinna><s=11><u>Email</u>: notasas@gmail.com"\\r
- "<p><f=Corinna><s=10><u>Web</u>: http://notaz.gp2x.de"\\r
- "<p><f=Corinna><s=10><u>Dave's Web</u>: http://www.finalburn.com";\r
-}\r
-\r
-/**************************************\r
- *\r
- * credits dialog\r
- *\r
- **************************************/\r
-\r
-// A simple dialog shall use the QIK_DIALOG resource struct to \r
-// define which UI configurations it supports.\r
-RESOURCE QIK_DIALOG r_pico_credits\r
-{\r
- title = "Credits and thanks";\r
- configurations = \r
- {\r
- QIK_DIALOG_CONFIGURATION\r
- {\r
- ui_config_mode = 0;\r
- container = r_pico_credits_container;\r
- command_list = r_pico_credits_commands;\r
- }\r
- };\r
- controls = r_pico_credits_controls;\r
-}\r
-\r
-RESOURCE QIK_COMMAND_LIST r_pico_credits_commands\r
-{\r
- items=\r
- {\r
- QIK_COMMAND\r
- {\r
- id = EEikCmdPicoAboutDoneCmd;\r
- type = EQikCommandTypeDone;\r
- text = "Done";\r
- }\r
- };\r
-}\r
-\r
-// A collection of controls that can be used throughout the various \r
-// view/container/building block structs by using the unique handle in \r
-// QIK_CONTROL. So you can specify how the control should be created here and \r
-// just reference to it from other places.\r
-RESOURCE QIK_CONTROL_COLLECTION r_pico_credits_controls\r
-{\r
- items = \r
- {\r
- QIK_CONTROL\r
- {\r
- unique_handle = ECtlPicoCreditsText;\r
- type = EEikCtEdwin;\r
- control = r_pico_credits_edwin;\r
- itemflags = EQikCtrlFlagIsEditInPlace;\r
- }\r
- };\r
-}\r
-\r
-// the controls themselves\r
-RESOURCE EDWIN r_pico_credits_edwin\r
-{\r
- flags = EEikEdwinDisplayOnly|EEikEdwinReadOnly|EEikEdwinNoHorizScrolling|EEikEdwinDisableAutoCurEnd;\r
- lines = 11;\r
-}\r
-\r
-// Defines the content of the simple dialog and how they are laid out. \r
-// Default layout manager is used for laying out the controls, which is a row \r
-// layout.\r
-RESOURCE QIK_CONTAINER_SETTINGS r_pico_credits_container\r
-{\r
- controls = \r
- {\r
- QIK_CONTAINER_ITEM_CI_LI\r
- {\r
- type = EQikCtOnelineBuildingBlock;\r
- control = r_pico_credits_bb1;\r
- }\r
- };\r
-}\r
- \r
-// Building block that contains the label.\r
-RESOURCE QIK_SYSTEM_BUILDING_BLOCK r_pico_credits_bb1\r
-{\r
- content =\r
- {\r
- QIK_SLOT_CONTENT\r
- {\r
- slot_id = EQikItemSlot1;\r
- unique_handle = ECtlPicoCreditsText;\r
- }\r
- };\r
-}\r
-\r
-\r
-RESOURCE ARRAY r_pico_tbuf_credits\r
-{\r
- items=\r
- {\r
- LBUF{txt="This emulator uses code from these people / projects:";},\r
- LBUF{txt="";},\r
- LBUF{txt="Dave";},\r
- LBUF{txt="- Cyclone 68000 core, Pico emulation library";},\r
- LBUF{txt="Homepage: http://www.finalburn.com/";},\r
- LBUF{txt="";},\r
- LBUF{txt="Reesy & FluBBa";},\r
- LBUF{txt="- DrZ80, the Z80 emulator written in ARM assembly.";},\r
- LBUF{txt="Homepage: http://reesy.gp32x.de/";},\r
- LBUF{txt="";},\r
- LBUF{txt="MultiArcadeMachineEmulator (MAME) development";},\r
- LBUF{txt="- software implementation of Yamaha FM sound generator and";},\r
- LBUF{txt="Texas Instruments SN76489 / SN76496 programmable tone / noise generator";},\r
- LBUF{txt="Homepage: http://www.mame.net/";},\r
- LBUF{txt="";},\r
- LBUF{txt="Helix community";},\r
- LBUF{txt="Helix mp3 decoder";},\r
- LBUF{txt="";},\r
- LBUF{txt="Additional thanks:";},\r
- LBUF{txt="- Charles MacDonald (http://cgfm2.emuviews.com/) for old but still very useful info about genesis hardware.";},\r
- LBUF{txt="- Stéphane Dallongeville for creating Gens and making it open-source.";},\r
- LBUF{txt="- Steve Snake for all that he has done for Genesis emulation scene.";},\r
- LBUF{txt="- Tasco Deluxe for his reverse engineering work on SVP and some mappers.";},\r
- LBUF{txt="- Bart Trzynadlowski for his SSFII and 68000 docs.";},\r
- LBUF{txt="- Haze for his research (http://haze.mameworld.info).";},\r
- LBUF{txt="- Lordus, Exophase and Rokas for various ideas.";},\r
- LBUF{txt="- Mark and Jean-loup for zlib library.";},\r
- LBUF{txt="- Peter van Sebille for his various open-source Symbian projects to learn from.";},\r
- LBUF{txt="- Steve Fischer for his open-source Motorola projects.";},\r
- LBUF{txt="- AnotherGuest for all his Symbian stuff and support.";},\r
- LBUF{txt="- Inder for the icons.";},\r
- LBUF{txt="- Anyone else I forgot. You know who you are.";}\r
- };\r
-}\r
-\r
-\r
-/**************************************\r
- *\r
- * debug dialog\r
- *\r
- **************************************/\r
-\r
-RESOURCE QIK_DIALOG r_pico_debug\r
-{\r
- title = "debug";\r
- configurations = \r
- {\r
- QIK_DIALOG_CONFIGURATION\r
- {\r
- ui_config_mode = 0;\r
- container = r_pico_credits_container; // stuff from credits should fit\r
- command_list = r_pico_credits_commands;\r
- }\r
- };\r
- controls = r_pico_credits_controls;\r
-}\r
-\r