diff --git a/data/language/french.txt b/data/language/french.txt
index 1788d14dcf..d1ed70736b 100644
--- a/data/language/french.txt
+++ b/data/language/french.txt
@@ -604,225 +604,225 @@ STR_0599 :A compact roller coaster with individual cars and smooth twisting d
STR_0600 :
STR_0601 :
STR_0602 :
-STR_0603 :Guest {INT32}
-STR_0604 :Guest {INT32}
-STR_0605 :Guest {INT32}
-STR_0606 :Guest {INT32}
-STR_0607 :Guest {INT32}
-STR_0608 :Guest {INT32}
-STR_0609 :Guest {INT32}
-STR_0610 :Guest {INT32}
-STR_0611 :Guest {INT32}
-STR_0612 :Guest {INT32}
-STR_0613 :Guest {INT32}
-STR_0614 :Guest {INT32}
-STR_0615 :Guest {INT32}
-STR_0616 :Guest {INT32}
-STR_0617 :Guest {INT32}
-STR_0618 :Guest {INT32}
-STR_0619 :Guest {INT32}
-STR_0620 :Guest {INT32}
-STR_0621 :Guest {INT32}
-STR_0622 :Guest {INT32}
-STR_0623 :Guest {INT32}
-STR_0624 :Guest {INT32}
-STR_0625 :Guest {INT32}
-STR_0626 :Guest {INT32}
-STR_0627 :Guest {INT32}
-STR_0628 :Guest {INT32}
-STR_0629 :Guest {INT32}
-STR_0630 :Guest {INT32}
-STR_0631 :Guest {INT32}
-STR_0632 :Guest {INT32}
-STR_0633 :Guest {INT32}
-STR_0634 :Guest {INT32}
-STR_0635 :Guest {INT32}
-STR_0636 :Guest {INT32}
-STR_0637 :Guest {INT32}
-STR_0638 :Guest {INT32}
-STR_0639 :Guest {INT32}
-STR_0640 :Guest {INT32}
-STR_0641 :Guest {INT32}
-STR_0642 :Guest {INT32}
-STR_0643 :Guest {INT32}
-STR_0644 :Guest {INT32}
-STR_0645 :Guest {INT32}
-STR_0646 :Guest {INT32}
-STR_0647 :Guest {INT32}
-STR_0648 :Guest {INT32}
-STR_0649 :Guest {INT32}
-STR_0650 :Guest {INT32}
-STR_0651 :Guest {INT32}
-STR_0652 :Guest {INT32}
-STR_0653 :Guest {INT32}
-STR_0654 :Guest {INT32}
-STR_0655 :Guest {INT32}
-STR_0656 :Guest {INT32}
-STR_0657 :Guest {INT32}
-STR_0658 :Guest {INT32}
-STR_0659 :Guest {INT32}
-STR_0660 :Guest {INT32}
-STR_0661 :Guest {INT32}
-STR_0662 :Guest {INT32}
-STR_0663 :Guest {INT32}
-STR_0664 :Guest {INT32}
-STR_0665 :Guest {INT32}
-STR_0666 :Guest {INT32}
-STR_0667 :Guest {INT32}
-STR_0668 :Guest {INT32}
-STR_0669 :Guest {INT32}
-STR_0670 :Guest {INT32}
-STR_0671 :Guest {INT32}
-STR_0672 :Guest {INT32}
-STR_0673 :Guest {INT32}
-STR_0674 :Guest {INT32}
-STR_0675 :Guest {INT32}
-STR_0676 :Guest {INT32}
-STR_0677 :Guest {INT32}
-STR_0678 :Guest {INT32}
-STR_0679 :Guest {INT32}
-STR_0680 :Guest {INT32}
-STR_0681 :Guest {INT32}
-STR_0682 :Guest {INT32}
-STR_0683 :Guest {INT32}
-STR_0684 :Guest {INT32}
-STR_0685 :Guest {INT32}
-STR_0686 :Guest {INT32}
-STR_0687 :Guest {INT32}
-STR_0688 :Guest {INT32}
-STR_0689 :Guest {INT32}
-STR_0690 :Guest {INT32}
-STR_0691 :Guest {INT32}
-STR_0692 :Guest {INT32}
-STR_0693 :Guest {INT32}
-STR_0694 :Guest {INT32}
-STR_0695 :Guest {INT32}
-STR_0696 :Guest {INT32}
-STR_0697 :Guest {INT32}
-STR_0698 :Guest {INT32}
-STR_0699 :Guest {INT32}
-STR_0700 :Guest {INT32}
-STR_0701 :Guest {INT32}
-STR_0702 :Guest {INT32}
-STR_0703 :Guest {INT32}
-STR_0704 :Guest {INT32}
-STR_0705 :Guest {INT32}
-STR_0706 :Guest {INT32}
-STR_0707 :Guest {INT32}
-STR_0708 :Guest {INT32}
-STR_0709 :Guest {INT32}
-STR_0710 :Guest {INT32}
-STR_0711 :Guest {INT32}
-STR_0712 :Guest {INT32}
-STR_0713 :Guest {INT32}
-STR_0714 :Guest {INT32}
-STR_0715 :Guest {INT32}
-STR_0716 :Guest {INT32}
-STR_0717 :Guest {INT32}
-STR_0718 :Guest {INT32}
-STR_0719 :Guest {INT32}
-STR_0720 :Guest {INT32}
-STR_0721 :Guest {INT32}
-STR_0722 :Guest {INT32}
-STR_0723 :Guest {INT32}
-STR_0724 :Guest {INT32}
-STR_0725 :Guest {INT32}
-STR_0726 :Guest {INT32}
-STR_0727 :Guest {INT32}
-STR_0728 :Guest {INT32}
-STR_0729 :Guest {INT32}
-STR_0730 :Guest {INT32}
-STR_0731 :Guest {INT32}
-STR_0732 :Guest {INT32}
-STR_0733 :Guest {INT32}
-STR_0734 :Guest {INT32}
-STR_0735 :Guest {INT32}
-STR_0736 :Guest {INT32}
-STR_0737 :Guest {INT32}
-STR_0738 :Guest {INT32}
-STR_0739 :Guest {INT32}
-STR_0740 :Guest {INT32}
-STR_0741 :Guest {INT32}
-STR_0742 :Guest {INT32}
-STR_0743 :Guest {INT32}
-STR_0744 :Guest {INT32}
-STR_0745 :Guest {INT32}
-STR_0746 :Guest {INT32}
-STR_0747 :Guest {INT32}
-STR_0748 :Guest {INT32}
-STR_0749 :Guest {INT32}
-STR_0750 :Guest {INT32}
-STR_0751 :Guest {INT32}
-STR_0752 :Guest {INT32}
-STR_0753 :Guest {INT32}
-STR_0754 :Guest {INT32}
-STR_0755 :Guest {INT32}
-STR_0756 :Guest {INT32}
-STR_0757 :Guest {INT32}
-STR_0758 :Guest {INT32}
-STR_0759 :Guest {INT32}
-STR_0760 :Guest {INT32}
-STR_0761 :Guest {INT32}
-STR_0762 :Guest {INT32}
-STR_0763 :Guest {INT32}
-STR_0764 :Guest {INT32}
-STR_0765 :Guest {INT32}
-STR_0766 :Guest {INT32}
-STR_0767 :Guest {INT32}
-STR_0768 :Handyman {INT32}
-STR_0769 :Mechanic {INT32}
-STR_0770 :Security Guard {INT32}
-STR_0771 :Entertainer {INT32}
-STR_0772 :Unnamed park{POP16}{POP16}
-STR_0773 :Unnamed park{POP16}{POP16}
-STR_0774 :Unnamed park{POP16}{POP16}
-STR_0775 :Unnamed park{POP16}{POP16}
-STR_0776 :Unnamed park{POP16}{POP16}
-STR_0777 :Unnamed park{POP16}{POP16}
+STR_0603 :Visiteur {INT32}
+STR_0604 :Visiteur {INT32}
+STR_0605 :Visiteur {INT32}
+STR_0606 :Visiteur {INT32}
+STR_0607 :Visiteur {INT32}
+STR_0608 :Visiteur {INT32}
+STR_0609 :Visiteur {INT32}
+STR_0610 :Visiteur {INT32}
+STR_0611 :Visiteur {INT32}
+STR_0612 :Visiteur {INT32}
+STR_0613 :Visiteur {INT32}
+STR_0614 :Visiteur {INT32}
+STR_0615 :Visiteur {INT32}
+STR_0616 :Visiteur {INT32}
+STR_0617 :Visiteur {INT32}
+STR_0618 :Visiteur {INT32}
+STR_0619 :Visiteur {INT32}
+STR_0620 :Visiteur {INT32}
+STR_0621 :Visiteur {INT32}
+STR_0622 :Visiteur {INT32}
+STR_0623 :Visiteur {INT32}
+STR_0624 :Visiteur {INT32}
+STR_0625 :Visiteur {INT32}
+STR_0626 :Visiteur {INT32}
+STR_0627 :Visiteur {INT32}
+STR_0628 :Visiteur {INT32}
+STR_0629 :Visiteur {INT32}
+STR_0630 :Visiteur {INT32}
+STR_0631 :Visiteur {INT32}
+STR_0632 :Visiteur {INT32}
+STR_0633 :Visiteur {INT32}
+STR_0634 :Visiteur {INT32}
+STR_0635 :Visiteur {INT32}
+STR_0636 :Visiteur {INT32}
+STR_0637 :Visiteur {INT32}
+STR_0638 :Visiteur {INT32}
+STR_0639 :Visiteur {INT32}
+STR_0640 :Visiteur {INT32}
+STR_0641 :Visiteur {INT32}
+STR_0642 :Visiteur {INT32}
+STR_0643 :Visiteur {INT32}
+STR_0644 :Visiteur {INT32}
+STR_0645 :Visiteur {INT32}
+STR_0646 :Visiteur {INT32}
+STR_0647 :Visiteur {INT32}
+STR_0648 :Visiteur {INT32}
+STR_0649 :Visiteur {INT32}
+STR_0650 :Visiteur {INT32}
+STR_0651 :Visiteur {INT32}
+STR_0652 :Visiteur {INT32}
+STR_0653 :Visiteur {INT32}
+STR_0654 :Visiteur {INT32}
+STR_0655 :Visiteur {INT32}
+STR_0656 :Visiteur {INT32}
+STR_0657 :Visiteur {INT32}
+STR_0658 :Visiteur {INT32}
+STR_0659 :Visiteur {INT32}
+STR_0660 :Visiteur {INT32}
+STR_0661 :Visiteur {INT32}
+STR_0662 :Visiteur {INT32}
+STR_0663 :Visiteur {INT32}
+STR_0664 :Visiteur {INT32}
+STR_0665 :Visiteur {INT32}
+STR_0666 :Visiteur {INT32}
+STR_0667 :Visiteur {INT32}
+STR_0668 :Visiteur {INT32}
+STR_0669 :Visiteur {INT32}
+STR_0670 :Visiteur {INT32}
+STR_0671 :Visiteur {INT32}
+STR_0672 :Visiteur {INT32}
+STR_0673 :Visiteur {INT32}
+STR_0674 :Visiteur {INT32}
+STR_0675 :Visiteur {INT32}
+STR_0676 :Visiteur {INT32}
+STR_0677 :Visiteur {INT32}
+STR_0678 :Visiteur {INT32}
+STR_0679 :Visiteur {INT32}
+STR_0680 :Visiteur {INT32}
+STR_0681 :Visiteur {INT32}
+STR_0682 :Visiteur {INT32}
+STR_0683 :Visiteur {INT32}
+STR_0684 :Visiteur {INT32}
+STR_0685 :Visiteur {INT32}
+STR_0686 :Visiteur {INT32}
+STR_0687 :Visiteur {INT32}
+STR_0688 :Visiteur {INT32}
+STR_0689 :Visiteur {INT32}
+STR_0690 :Visiteur {INT32}
+STR_0691 :Visiteur {INT32}
+STR_0692 :Visiteur {INT32}
+STR_0693 :Visiteur {INT32}
+STR_0694 :Visiteur {INT32}
+STR_0695 :Visiteur {INT32}
+STR_0696 :Visiteur {INT32}
+STR_0697 :Visiteur {INT32}
+STR_0698 :Visiteur {INT32}
+STR_0699 :Visiteur {INT32}
+STR_0700 :Visiteur {INT32}
+STR_0701 :Visiteur {INT32}
+STR_0702 :Visiteur {INT32}
+STR_0703 :Visiteur {INT32}
+STR_0704 :Visiteur {INT32}
+STR_0705 :Visiteur {INT32}
+STR_0706 :Visiteur {INT32}
+STR_0707 :Visiteur {INT32}
+STR_0708 :Visiteur {INT32}
+STR_0709 :Visiteur {INT32}
+STR_0710 :Visiteur {INT32}
+STR_0711 :Visiteur {INT32}
+STR_0712 :Visiteur {INT32}
+STR_0713 :Visiteur {INT32}
+STR_0714 :Visiteur {INT32}
+STR_0715 :Visiteur {INT32}
+STR_0716 :Visiteur {INT32}
+STR_0717 :Visiteur {INT32}
+STR_0718 :Visiteur {INT32}
+STR_0719 :Visiteur {INT32}
+STR_0720 :Visiteur {INT32}
+STR_0721 :Visiteur {INT32}
+STR_0722 :Visiteur {INT32}
+STR_0723 :Visiteur {INT32}
+STR_0724 :Visiteur {INT32}
+STR_0725 :Visiteur {INT32}
+STR_0726 :Visiteur {INT32}
+STR_0727 :Visiteur {INT32}
+STR_0728 :Visiteur {INT32}
+STR_0729 :Visiteur {INT32}
+STR_0730 :Visiteur {INT32}
+STR_0731 :Visiteur {INT32}
+STR_0732 :Visiteur {INT32}
+STR_0733 :Visiteur {INT32}
+STR_0734 :Visiteur {INT32}
+STR_0735 :Visiteur {INT32}
+STR_0736 :Visiteur {INT32}
+STR_0737 :Visiteur {INT32}
+STR_0738 :Visiteur {INT32}
+STR_0739 :Visiteur {INT32}
+STR_0740 :Visiteur {INT32}
+STR_0741 :Visiteur {INT32}
+STR_0742 :Visiteur {INT32}
+STR_0743 :Visiteur {INT32}
+STR_0744 :Visiteur {INT32}
+STR_0745 :Visiteur {INT32}
+STR_0746 :Visiteur {INT32}
+STR_0747 :Visiteur {INT32}
+STR_0748 :Visiteur {INT32}
+STR_0749 :Visiteur {INT32}
+STR_0750 :Visiteur {INT32}
+STR_0751 :Visiteur {INT32}
+STR_0752 :Visiteur {INT32}
+STR_0753 :Visiteur {INT32}
+STR_0754 :Visiteur {INT32}
+STR_0755 :Visiteur {INT32}
+STR_0756 :Visiteur {INT32}
+STR_0757 :Visiteur {INT32}
+STR_0758 :Visiteur {INT32}
+STR_0759 :Visiteur {INT32}
+STR_0760 :Visiteur {INT32}
+STR_0761 :Visiteur {INT32}
+STR_0762 :Visiteur {INT32}
+STR_0763 :Visiteur {INT32}
+STR_0764 :Visiteur {INT32}
+STR_0765 :Visiteur {INT32}
+STR_0766 :Visiteur {INT32}
+STR_0767 :Visiteur {INT32}
+STR_0768 :Homme de service {INT32}
+STR_0769 :Mécanicien {INT32}
+STR_0770 :Agent de sécurité {INT32}
+STR_0771 :Animateur {INT32}
+STR_0772 :Parc sans nom{POP16}{POP16}
+STR_0773 :Parc sans nom{POP16}{POP16}
+STR_0774 :Parc sans nom{POP16}{POP16}
+STR_0775 :Parc sans nom{POP16}{POP16}
+STR_0776 :Parc sans nom{POP16}{POP16}
+STR_0777 :Parc sans nom{POP16}{POP16}
STR_0778 :Sign
-STR_0779 :1st
-STR_0780 :2nd
-STR_0781 :3rd
-STR_0782 :4th
-STR_0783 :5th
-STR_0784 :6th
-STR_0785 :7th
-STR_0786 :8th
-STR_0787 :9th
-STR_0788 :10th
-STR_0789 :11th
-STR_0790 :12th
-STR_0791 :13th
-STR_0792 :14th
-STR_0793 :15th
-STR_0794 :16th
-STR_0795 :17th
-STR_0796 :18th
-STR_0797 :19th
-STR_0798 :20th
-STR_0799 :21st
-STR_0800 :22nd
-STR_0801 :23rd
-STR_0802 :24th
-STR_0803 :25th
-STR_0804 :26th
-STR_0805 :27th
-STR_0806 :28th
-STR_0807 :29th
-STR_0808 :30th
-STR_0809 :31st
+STR_0779 :1er
+STR_0780 :2ème
+STR_0781 :3ème
+STR_0782 :4ème
+STR_0783 :5ème
+STR_0784 :6ème
+STR_0785 :7ème
+STR_0786 :8ème
+STR_0787 :9ème
+STR_0788 :10ème
+STR_0789 :11ème
+STR_0790 :12ème
+STR_0791 :13ème
+STR_0792 :14ème
+STR_0793 :15ème
+STR_0794 :16ème
+STR_0795 :17ème
+STR_0796 :18ème
+STR_0797 :19ème
+STR_0798 :20ème
+STR_0799 :21ème
+STR_0800 :22ème
+STR_0801 :23ème
+STR_0802 :24ème
+STR_0803 :25ème
+STR_0804 :26ème
+STR_0805 :27ème
+STR_0806 :28ème
+STR_0807 :29ème
+STR_0808 :30ème
+STR_0809 :31ème
STR_0810 :Jan
-STR_0811 :Feb
+STR_0811 :Fév
STR_0812 :Mar
-STR_0813 :Apr
-STR_0814 :May
+STR_0813 :Avr
+STR_0814 :Mai
STR_0815 :Jun
STR_0816 :Jul
-STR_0817 :Aug
+STR_0817 :Aoû
STR_0818 :Sep
STR_0819 :Oct
STR_0820 :Nov
-STR_0821 :Dec
+STR_0821 :Déc
STR_0822 :Unable to access graphic data file
STR_0823 :Missing or inaccessible data file
STR_0824 :{BLACK}{CROSS}
@@ -843,21 +843,21 @@ STR_0838 :CD key code {INT32} is not valid for your RollerCoaster Tycoon 2 CD
STR_0839 :{UINT16} x {UINT16}
STR_0840 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{UINT16} x {UINT16}
STR_0841 :Desktop window
-STR_0842 :640x480 full screen
-STR_0843 :800x600 full screen
-STR_0844 :1024x768 full screen
-STR_0845 :1152x864 full screen
-STR_0846 :1280x1024 full screen
-STR_0847 :About 'RollerCoaster Tycoon 2'
+STR_0842 :640x480 plein écran
+STR_0843 :800x600 plein écran
+STR_0844 :1024x768 plein écran
+STR_0845 :1152x864 plein écran
+STR_0846 :1280x1024 plein écran
+STR_0847 :A propos 'RollerCoaster Tycoon 2'
STR_0848 :RollerCoaster Tycoon 2
STR_0849 :{WINDOW_COLOUR_2}Version 2.01.028
-STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, all rights reserved
-STR_0851 :{WINDOW_COLOUR_2}Designed and programmed by Chris Sawyer
-STR_0852 :{WINDOW_COLOUR_2}Graphics by Simon Foster
-STR_0853 :{WINDOW_COLOUR_2}Sound and music by Allister Brimble
-STR_0854 :{WINDOW_COLOUR_2}Additional sounds recorded by David Ellis
-STR_0855 :{WINDOW_COLOUR_2}Representation by Jacqui Lyons at Marjacq Ltd.
-STR_0856 :{WINDOW_COLOUR_2}Thanks to:-
+STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, tous droits réservés
+STR_0851 :{WINDOW_COLOUR_2}Conçu et programmé par Chris Sawyer
+STR_0852 :{WINDOW_COLOUR_2}Graphismes : Simon Foster
+STR_0853 :{WINDOW_COLOUR_2}Son et musique : Allister Brimble
+STR_0854 :{WINDOW_COLOUR_2}Enregistrement sons additionnels : David Ellis
+STR_0855 :{WINDOW_COLOUR_2}Représentation :Jacqui Lyons, Marjacq Ltd.
+STR_0856 :{WINDOW_COLOUR_2}Remerciements:-
STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth, and John Wardley
STR_0858 :{WINDOW_COLOUR_2}
STR_0859 :{WINDOW_COLOUR_2}
@@ -883,16 +883,16 @@ STR_0878 :Too high !
STR_0879 :Can't lower land here...
STR_0880 :Can't raise land here...
STR_0881 :Object in the way
-STR_0882 :Load Game
-STR_0883 :Save Game
+STR_0882 :Charger partie
+STR_0883 :Sauvegarder partie
STR_0884 :Load Landscape
STR_0885 :Save Landscape
-STR_0886 :Quit Game
-STR_0887 :Quit Scenario Editor
-STR_0888 :Quit Roller Coaster Designer
+STR_0886 :Quitter la partie
+STR_0887 :Quitter l'Editeur de scénario
+STR_0888 :Quitter Roller Coaster Designer
STR_0889 :Quit Track Designs Manager
STR_0890 :SCR{COMMA16}.BMP
-STR_0891 :Screenshot
+STR_0891 :Capture d'écran
STR_0892 :Screenshot saved to disk as '{STRINGID}'
STR_0893 :Screenshot failed !
STR_0894 :Landscape data area full !
@@ -940,20 +940,20 @@ STR_0935 :Ride exit in the way
STR_0936 :Park entrance in the way
STR_0937 :{SMALLFONT}{BLACK}View options
STR_0938 :{SMALLFONT}{BLACK}Adjust land height and slope
-STR_0939 :Underground/Inside View
-STR_0940 :Remove Base Land
-STR_0941 :Remove Vertical Faces
-STR_0942 :See-Through Rides
-STR_0943 :See-Through Scenery
-STR_0944 :Save
-STR_0945 :Don't Save
-STR_0946 :Cancel
+STR_0939 :Vue souterraine/intérieure
+STR_0940 :Supprimer surface de base
+STR_0941 :Supprimer surfaces verticales
+STR_0942 :Attractions transparentes
+STR_0943 :Décor transparent
+STR_0944 :Sauvegarder
+STR_0945 :Ne pas sauvegarder
+STR_0946 :Annuler
STR_0947 :Save this before loading ?
STR_0948 :Save this before quitting ?
STR_0949 :Save this before quitting ?
-STR_0950 :Load Game
-STR_0951 :Quit Game
-STR_0952 :Quit Game
+STR_0950 :Charger une partie
+STR_0951 :Quitter la partie
+STR_0952 :Quitter la partie
STR_0953 :Load Landscape
STR_0954 :
STR_0955 :{SMALLFONT}{BLACK}Select seat rotation angle for this track section
@@ -980,7 +980,7 @@ STR_0975 :Shops and Stalls
STR_0976 :Restrooms and Information Kiosks
STR_0977 :New Transport Rides
STR_0978 :New Gentle Rides
-STR_0979 :New Roller Coasters
+STR_0979 :Nouvelles montagnes russes
STR_0980 :New Thrill Rides
STR_0981 :New Water Rides
STR_0982 :New Shops & Stalls
@@ -1012,10 +1012,10 @@ STR_1007 :Unable to create enough vehicles
STR_1008 :{SMALLFONT}{BLACK}Open, close, or test ride/attraction
STR_1009 :{SMALLFONT}{BLACK}Open or close all rides/attractions
STR_1010 :{SMALLFONT}{BLACK}Open or close park
-STR_1011 :Close all
-STR_1012 :Open all
-STR_1013 :Close park
-STR_1014 :Open park
+STR_1011 :Tout fermer
+STR_1012 :Tout ouvrir
+STR_1013 :Fermer le parc
+STR_1014 :Ouvrir le parc
STR_1015 :Unable to operate with more than one station platform in this mode
STR_1016 :Unable to operate with less than two stations in this mode
STR_1017 :Can't change operating mode...
@@ -1025,8 +1025,8 @@ STR_1020 :Can't make changes...
STR_1021 :{POP16}{POP16}{POP16}{POP16}{STRINGID}
STR_1022 :{POP16}{POP16}{POP16}{COMMA16} car per train
STR_1023 :{POP16}{POP16}{POP16}{COMMA16} cars per train
-STR_1024 :{COMMA16} car per train
-STR_1025 :{COMMA16} cars per train
+STR_1024 :{COMMA16} voiture par train
+STR_1025 :{COMMA16} voitures par train
STR_1026 :Station platform too long!
STR_1027 :{SMALLFONT}{BLACK}Locate this on Main View
STR_1028 :Off edge of map!
@@ -1037,12 +1037,12 @@ STR_1032 :Can only build this on water!
STR_1033 :Can only build this above ground!
STR_1034 :Can only build this on land!
STR_1035 :Local authority won't allow construction above tree-height!
-STR_1036 :Load Game
+STR_1036 :Charger une partie
STR_1037 :Load Landscape
STR_1038 :Convert saved game to scenario
STR_1039 :Install new track design
-STR_1040 :Save Game
-STR_1041 :Save Scenario
+STR_1040 :Sauvegarder la partie
+STR_1041 :Sauvegarder le scénario
STR_1042 :Save Landscape
STR_1043 :RollerCoaster Tycoon 2 Saved Game
STR_1044 :RollerCoaster Tycoon 2 Scenario File
@@ -1182,10 +1182,10 @@ STR_1177 :Can't remove footpath from here...
STR_1178 :Land slope unsuitable
STR_1179 :Footpath in the way
STR_1180 :Can't build this underwater!
-STR_1181 :Footpaths
+STR_1181 :Allées
STR_1182 :Type
STR_1183 :Direction
-STR_1184 :Slope
+STR_1184 :Direction
STR_1185 :{SMALLFONT}{BLACK}Direction
STR_1186 :{SMALLFONT}{BLACK}Slope down
STR_1187 :{SMALLFONT}{BLACK}Level
@@ -1195,10 +1195,10 @@ STR_1190 :{SMALLFONT}{BLACK}Remove previous footpath section
STR_1191 :{BLACK}{STRINGID}
STR_1192 :{OUTLINE}{RED}{STRINGID}
STR_1193 :{WINDOW_COLOUR_2}{STRINGID}
-STR_1194 :Closed
-STR_1195 :Test Run
-STR_1196 :Open
-STR_1197 :Broken Down
+STR_1194 :Fermé
+STR_1195 :En test
+STR_1196 :Ouvert
+STR_1197 :En panne
STR_1198 :Crashed!
STR_1199 :{COMMA16} person on ride
STR_1200 :{COMMA16} people on ride
@@ -1218,7 +1218,7 @@ STR_1213 :{SMALLFONT}{BLACK}Select minimum length of time to wait before depa
STR_1214 :{SMALLFONT}{BLACK}Select maximum length of time to wait before departing
STR_1215 :{WINDOW_COLOUR_2}Synchronize with adjacent stations
STR_1216 :{SMALLFONT}{BLACK}Select whether to synchronize departure with all adjacent stations (for 'racing')
-STR_1217 :{COMMA16} seconds
+STR_1217 :{COMMA16} secondes
STR_1218 :{BLACK}{SMALLUP}
STR_1219 :{BLACK}{SMALLDOWN}
STR_1220 :Exit only
@@ -1348,7 +1348,7 @@ STR_1343 :{DURATION} /
STR_1344 :{WINDOW_COLOUR_2}Ride length: {BLACK}{STRINGID}{STRINGID}{STRINGID}{STRINGID}
STR_1345 :{LENGTH}
STR_1346 :{LENGTH} /
-STR_1347 :{WINDOW_COLOUR_2}Average speed: {BLACK}{VELOCITY}
+STR_1347 :{WINDOW_COLOUR_2}Vitesse moyenne: {BLACK}{VELOCITY}
STR_1348 :{WINDOW_COLOUR_2}Max. positive vertical G's: {BLACK}{COMMA2DP32}g
STR_1349 :{WINDOW_COLOUR_2}Max. positive vertical G's: {OUTLINE}{RED}{COMMA2DP32}g
STR_1350 :{WINDOW_COLOUR_2}Max. negative vertical G's: {BLACK}{COMMA2DP32}g
@@ -1401,8 +1401,8 @@ STR_1396 :{SMALLFONT}{BLACK}Color scheme options
STR_1397 :{SMALLFONT}{BLACK}Sound & music options
STR_1398 :{SMALLFONT}{BLACK}Measurements and test data
STR_1399 :{SMALLFONT}{BLACK}Graphs
-STR_1400 :Entrance
-STR_1401 :Exit
+STR_1400 :Entrée
+STR_1401 :Sortie
STR_1402 :{SMALLFONT}{BLACK}Build or move entrance to ride/attraction
STR_1403 :{SMALLFONT}{BLACK}Build or move exit from ride/attraction
STR_1404 :{SMALLFONT}{BLACK}Rotate 90{DEGREE}
@@ -1428,11 +1428,11 @@ STR_1423 :{SMALLFONT}{BLACK}Queue line path
STR_1424 :{SMALLFONT}{BLACK}Footpath
STR_1425 :Footpath
STR_1426 :Queue Line
-STR_1427 :{WINDOW_COLOUR_2}Customers: {BLACK}{COMMA32} per hour
+STR_1427 :{WINDOW_COLOUR_2}Clients: {BLACK}{COMMA32} par heure
STR_1428 :{WINDOW_COLOUR_2}Admission price:
STR_1429 :{POP16}{POP16}{POP16}{CURRENCY2DP}
STR_1430 :Free
-STR_1431 :Walking
+STR_1431 :Marche
STR_1432 :Heading for {STRINGID}
STR_1433 :Queuing for {STRINGID}
STR_1434 :Drowning
@@ -1442,7 +1442,7 @@ STR_1437 :At {STRINGID}
STR_1438 :Sitting
STR_1439 :(select location)
STR_1440 :Mowing grass
-STR_1441 :Sweeping footpath
+STR_1441 :Balaye l'allée
STR_1442 :Emptying litter bin
STR_1443 :Watering gardens
STR_1444 :Watching {STRINGID}
@@ -1459,7 +1459,7 @@ STR_1454 :Can't name guest...
STR_1455 :Invalid name for guest
STR_1456 :{WINDOW_COLOUR_2}Cash spent: {BLACK}{CURRENCY2DP}
STR_1457 :{WINDOW_COLOUR_2}Cash in pocket: {BLACK}{CURRENCY2DP}
-STR_1458 :{WINDOW_COLOUR_2}Time in park: {BLACK}{REALTIME}
+STR_1458 :{WINDOW_COLOUR_2}Temps dans le parc: {BLACK}{REALTIME}
STR_1459 :Track style
STR_1460 :{SMALLFONT}{BLACK}'U' shaped open track
STR_1461 :{SMALLFONT}{BLACK}'O' shaped enclosed track
@@ -1658,17 +1658,17 @@ STR_1653 :{SMALLFONT}{OPENQUOTES}...and here we are on {STRINGID}!{ENDQUOTES}
STR_1654 :{WINDOW_COLOUR_2}Recent thoughts:
STR_1655 :{SMALLFONT}{BLACK}Construct footpath on land
STR_1656 :{SMALLFONT}{BLACK}Construct bridge or tunnel footpath
-STR_1657 :{WINDOW_COLOUR_2}Preferred ride
+STR_1657 :{WINDOW_COLOUR_2}Attraction favorite
STR_1658 :{WINDOW_COLOUR_2}intensity: {BLACK}less than {COMMA16}
-STR_1659 :{WINDOW_COLOUR_2}intensity: {BLACK}between {COMMA16} and {COMMA16}
+STR_1659 :{WINDOW_COLOUR_2}intensité: {BLACK}entre {COMMA16} et {COMMA16}
STR_1660 :{WINDOW_COLOUR_2}intensity: {BLACK}more than {COMMA16}
-STR_1661 :{WINDOW_COLOUR_2}Nausea tolerance: {BLACK}{STRINGID}
-STR_1662 :{WINDOW_COLOUR_2}Happiness:
-STR_1663 :{WINDOW_COLOUR_2}Nausea:
-STR_1664 :{WINDOW_COLOUR_2}Energy:
-STR_1665 :{WINDOW_COLOUR_2}Hunger:
-STR_1666 :{WINDOW_COLOUR_2}Thirst:
-STR_1667 :{WINDOW_COLOUR_2}Bathroom:
+STR_1661 :{WINDOW_COLOUR_2}Tolérance nausée: {BLACK}{STRINGID}
+STR_1662 :{WINDOW_COLOUR_2}Bonheur:
+STR_1663 :{WINDOW_COLOUR_2}Nausée:
+STR_1664 :{WINDOW_COLOUR_2}Energie:
+STR_1665 :{WINDOW_COLOUR_2}Faim:
+STR_1666 :{WINDOW_COLOUR_2}Soif:
+STR_1667 :{WINDOW_COLOUR_2}Toilettes:
STR_1668 :{WINDOW_COLOUR_2}Satisfaction: {BLACK}Unknown
STR_1669 :{WINDOW_COLOUR_2}Satisfaction: {BLACK}{COMMA16}%
STR_1670 :{WINDOW_COLOUR_2}Total customers: {BLACK}{COMMA32}
@@ -1717,19 +1717,19 @@ STR_1712 :{INLINE_SPRITE}{247}{19}{00}{00}{WINDOW_COLOUR_2}Sweep footpaths
STR_1713 :{INLINE_SPRITE}{248}{19}{00}{00}{WINDOW_COLOUR_2}Water gardens
STR_1714 :{INLINE_SPRITE}{249}{19}{00}{00}{WINDOW_COLOUR_2}Empty litter bins
STR_1715 :{INLINE_SPRITE}{250}{19}{00}{00}{WINDOW_COLOUR_2}Mow grass
-STR_1716 :Invalid name for park
-STR_1717 :Can't rename park...
-STR_1718 :Park Name
-STR_1719 :Enter name for park:-
+STR_1716 :Nom du parc non valide
+STR_1717 :Impossible de renommer le parc...
+STR_1718 :Nom dur parc
+STR_1719 :Saisir nom du parc:-
STR_1720 :{SMALLFONT}{BLACK}Name park
-STR_1721 :Park closed
-STR_1722 :Park open
+STR_1721 :Parc fermé
+STR_1722 :Parc ouvert
STR_1723 :Can't open park...
STR_1724 :Can't close park...
-STR_1725 :Can't buy land...
-STR_1726 :Land not for sale!
-STR_1727 :Construction rights not for sale!
-STR_1728 :Can't buy construction rights here...
+STR_1725 :Impossible d'acheter le terrain...
+STR_1726 :Ce terrain n'est pas a vendre!
+STR_1727 :Les droits de construction ne sont pas à vendre!
+STR_1728 :Impossible d'acheter les droits de construction içi...
STR_1729 :Land not owned by park!
STR_1730 :{RED}Closed - -
STR_1731 :{WHITE}{STRINGID} - -
@@ -1741,7 +1741,7 @@ STR_1736 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM
STR_1737 :{COMMA16}
STR_1738 :Can't change number of laps...
STR_1739 :Race won by guest {INT32}
-STR_1740 :Race won by {STRINGID}
+STR_1740 :Course gagnée par {STRINGID}
STR_1741 :Not yet constructed !
STR_1742 :{WINDOW_COLOUR_2}Max. people on ride:
STR_1743 :{SMALLFONT}{BLACK}Maximum number of people allowed on this ride at one time
@@ -1819,35 +1819,35 @@ STR_1814 :Actions
STR_1815 :Thoughts
STR_1816 :{SMALLFONT}{BLACK}Select information type to show in guest list
STR_1817 :({COMMA16})
-STR_1818 :{WINDOW_COLOUR_2}All guests
-STR_1819 :{WINDOW_COLOUR_2}All guests (summarized)
-STR_1820 :{WINDOW_COLOUR_2}Guests {STRINGID}
+STR_1818 :{WINDOW_COLOUR_2}Tous les visiteurs
+STR_1819 :{WINDOW_COLOUR_2}Tous les visiteurs (résumé)
+STR_1820 :{WINDOW_COLOUR_2}Visiteurs {STRINGID}
STR_1821 :{WINDOW_COLOUR_2}Guests thinking {STRINGID}
STR_1822 :{WINDOW_COLOUR_2}Guests thinking about {POP16}{STRINGID}
STR_1823 :{SMALLFONT}{BLACK}Show guests' thoughts about this ride/attraction
STR_1824 :{SMALLFONT}{BLACK}Show guests on this ride/attraction
STR_1825 :{SMALLFONT}{BLACK}Show guests queuing for this ride/attraction
-STR_1826 :Status
-STR_1827 :Popularity
+STR_1826 :Statut
+STR_1827 :Popularité
STR_1828 :Satisfaction
-STR_1829 :Profit
-STR_1830 :Queue length
-STR_1831 :Queue time
-STR_1832 :Reliability
-STR_1833 :Down-time
-STR_1834 :Guests favorite
+STR_1829 :Bénéfice
+STR_1830 :Longueur file
+STR_1831 :Temps attente
+STR_1832 :Fiabilité
+STR_1833 :Immobilisation
+STR_1834 :Plébiscitée
STR_1835 :Popularity: Unknown
STR_1836 :Popularity: {COMMA16}%
STR_1837 :Satisfaction: Unknown
STR_1838 :Satisfaction: {COMMA16}%
-STR_1839 :Reliability: {COMMA16}%
-STR_1840 :Down-time: {COMMA16}%
-STR_1841 :Profit: {CURRENCY} per hour
-STR_1842 :Favorite of: {COMMA16} guest
-STR_1843 :Favorite of: {COMMA16} guests
+STR_1839 :Fiabilité: {COMMA16}%
+STR_1840 :Immobilisation: {COMMA16}%
+STR_1841 :Revenu: {CURRENCY} par heure
+STR_1842 :Attraction préférée de: {COMMA16} visiteur
+STR_1843 :Attraction préférée de: {COMMA16} visiteurs
STR_1844 :{SMALLFONT}{BLACK}Select information type to show in ride/attraction list
STR_1845 :{MONTHYEAR}
-STR_1846 :{COMMA16} guests
+STR_1846 :{COMMA16} visiteurs
STR_1847 :{INLINE_SPRITE}{11}{20}{00}{00}{COMMA16} guests
STR_1848 :{INLINE_SPRITE}{10}{20}{00}{00}{COMMA16} guests
STR_1849 :{WINDOW_COLOUR_2}Play music
@@ -1861,13 +1861,13 @@ STR_1856 :{WINDOW_COLOUR_2}Profit per item sold: {BLACK}{CURRENCY2DP}
STR_1857 :{WINDOW_COLOUR_2}Loss per item sold: {BLACK}{CURRENCY2DP}
STR_1858 :{WINDOW_COLOUR_2}Cost: {BLACK}{CURRENCY} per month
STR_1859 :Handymen
-STR_1860 :Mechanics
+STR_1860 :Mécaniciens
STR_1861 :Security Guards
-STR_1862 :Entertainers
+STR_1862 :Animateurs
STR_1863 :Handyman
-STR_1864 :Mechanic
+STR_1864 :Mécanicien
STR_1865 :Security Guard
-STR_1866 :Entertainer
+STR_1866 :Animateur
STR_1867 :{BLACK}{COMMA16} {STRINGID}
STR_1868 :Can't change number of rotations...
STR_1869 :{WINDOW_COLOUR_2}Number of rotations:
@@ -1880,13 +1880,13 @@ STR_1875 :{BLACK} {SPRITE}{BLACK} {STRINGID}
STR_1876 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{251}{19}{00}{00}Inspect Rides
STR_1877 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{252}{19}{00}{00}Fix Rides
STR_1878 :{WINDOW_COLOUR_2}Inspection:
-STR_1879 :Every 10 minutes
-STR_1880 :Every 20 minutes
-STR_1881 :Every 30 minutes
-STR_1882 :Every 45 minutes
-STR_1883 :Every hour
-STR_1884 :Every 2 hours
-STR_1885 :Never
+STR_1879 :Toutes les 10 minutes
+STR_1880 :Toutes les 20 minutes
+STR_1881 :Toutes les 30 minutes
+STR_1882 :Toutes les 45 minutes
+STR_1883 :Toutes les heures
+STR_1884 :Toutes les 2 heures
+STR_1885 :Jamais
STR_1886 :Inspecting {STRINGID}
STR_1887 :{WINDOW_COLOUR_2}Time since last inspection: {BLACK}{COMMA16} minutes
STR_1888 :{WINDOW_COLOUR_2}Time since last inspection: {BLACK}more than 4 hours
@@ -1897,35 +1897,35 @@ STR_1892 :RollerCoaster Tycoon 2
STR_1893 :Please insert your RollerCoaster Tycoon 2 CD in the following drive:-
STR_1894 :{WINDOW_COLOUR_2}{STRINGID} sold: {BLACK}{COMMA32}
STR_1895 :{SMALLFONT}{BLACK}Build new ride/attraction
-STR_1896 :{WINDOW_COLOUR_2}Expenditure/Income
-STR_1897 :{WINDOW_COLOUR_2}Ride construction
-STR_1898 :{WINDOW_COLOUR_2}Ride running costs
-STR_1899 :{WINDOW_COLOUR_2}Land purchase
-STR_1900 :{WINDOW_COLOUR_2}Landscaping
-STR_1901 :{WINDOW_COLOUR_2}Park entrance tickets
-STR_1902 :{WINDOW_COLOUR_2}Ride tickets
-STR_1903 :{WINDOW_COLOUR_2}Shop sales
-STR_1904 :{WINDOW_COLOUR_2}Shop stock
-STR_1905 :{WINDOW_COLOUR_2}Food/drink sales
-STR_1906 :{WINDOW_COLOUR_2}Food/drink stock
-STR_1907 :{WINDOW_COLOUR_2}Staff wages
+STR_1896 :{WINDOW_COLOUR_2}Dépenses/Revenus
+STR_1897 :{WINDOW_COLOUR_2}Constr. attraction
+STR_1898 :{WINDOW_COLOUR_2}Coût d'expl. attr.
+STR_1899 :{WINDOW_COLOUR_2}Achat terrain
+STR_1900 :{WINDOW_COLOUR_2}Aménagement paysage
+STR_1901 :{WINDOW_COLOUR_2}Tickets parc
+STR_1902 :{WINDOW_COLOUR_2}Tickets attraction
+STR_1903 :{WINDOW_COLOUR_2}Ventes magasins
+STR_1904 :{WINDOW_COLOUR_2}Stocks magasins
+STR_1905 :{WINDOW_COLOUR_2}Ventes Nourr./Boiss.
+STR_1906 :{WINDOW_COLOUR_2}Stocks Nourr./Noiss.
+STR_1907 :{WINDOW_COLOUR_2}Salaires employés
STR_1908 :{WINDOW_COLOUR_2}Marketing
-STR_1909 :{WINDOW_COLOUR_2}Research
-STR_1910 :{WINDOW_COLOUR_2}Loan interest
-STR_1911 :{BLACK} at {COMMA16}% per year
+STR_1909 :{WINDOW_COLOUR_2}Recherche
+STR_1910 :{WINDOW_COLOUR_2}Intérêt d'emprunt
+STR_1911 :{BLACK} à {COMMA16}% par an
STR_1912 :{MONTH}
STR_1913 :{BLACK}+{CURRENCY2DP}
STR_1914 :{BLACK}{CURRENCY2DP}
STR_1915 :{RED}{CURRENCY2DP}
-STR_1916 :{WINDOW_COLOUR_2}Loan:
+STR_1916 :{WINDOW_COLOUR_2}Emprunt:
STR_1917 :{POP16}{POP16}{POP16}{CURRENCY}
-STR_1918 :Can't borrow any more money!
-STR_1919 :Not enough cash available!
-STR_1920 :Can't pay back loan!
-STR_1921 :{SMALLFONT}{BLACK}Start a new game
-STR_1922 :{SMALLFONT}{BLACK}Continue playing a saved game
-STR_1923 :{SMALLFONT}{BLACK}Show tutorial
-STR_1924 :{SMALLFONT}{BLACK}Exit
+STR_1918 :Impossible d'emprunter d'avantage ! La banque refuse d'augmenter votre emprunt !
+STR_1919 :Pas asser d'argent disponible !
+STR_1920 :Impossible de rembourser l'emprunt !
+STR_1921 :{SMALLFONT}{BLACK}Commencer une nouvelle partie
+STR_1922 :{SMALLFONT}{BLACK}Continuer une partie sauvegardée
+STR_1923 :{SMALLFONT}{BLACK}Didacticiel
+STR_1924 :{SMALLFONT}{BLACK}Quitter
STR_1925 :Can't place person here...
STR_1926 :{SMALLFONT}
STR_1927 :{YELLOW}{STRINGID} has broken down
@@ -1941,7 +1941,7 @@ STR_1936 :{STRINGID} has bought {STRINGID}
STR_1937 :{SMALLFONT}{BLACK}Show information about the subject of this message
STR_1938 :{SMALLFONT}{BLACK}Show view of guest
STR_1939 :{SMALLFONT}{BLACK}Show view of staff member
-STR_1940 :{SMALLFONT}{BLACK}Show happiness, energy, hunger etc. for this guest
+STR_1940 :{SMALLFONT}{BLACK}Show happiness, energy, hunger etc. for this gugest
STR_1941 :{SMALLFONT}{BLACK}Show which rides this guest has been on
STR_1942 :{SMALLFONT}{BLACK}Show financial information about this guest
STR_1943 :{SMALLFONT}{BLACK}Show guest's recent thoughts
@@ -1950,12 +1950,12 @@ STR_1945 :{SMALLFONT}{BLACK}Show orders and options for this staff member
STR_1946 :{SMALLFONT}{BLACK}Select costume for this entertainer
STR_1947 :{SMALLFONT}{BLACK}Show areas patrolled by selected staff type, and locate the nearest staff member
STR_1948 :{SMALLFONT}{BLACK}Hire a new staff member of the selected type
-STR_1949 :Financial Summary
-STR_1950 :Financial Graph
-STR_1951 :Park Value Graph
-STR_1952 :Profit Graph
+STR_1949 :Résumé financier
+STR_1950 :Graphique financier
+STR_1951 :Graphique valeur du parc
+STR_1952 :Graphique bénéfices
STR_1953 :Marketing
-STR_1954 :Research Funding
+STR_1954 :Financement recherches
STR_1955 :{WINDOW_COLOUR_2}Number of circuits:
STR_1956 :{SMALLFONT}{BLACK}Number of circuits of track per ride
STR_1957 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16}
@@ -2225,10 +2225,10 @@ STR_2220 :{WINDOW_COLOUR_2}Park Rating: {BLACK}{COMMA16}
STR_2221 :{SMALLFONT}{BLACK}Park Rating: {COMMA16}
STR_2222 :{SMALLFONT}{BLACK}{STRINGID}
STR_2223 :{WINDOW_COLOUR_2}Guests in park: {BLACK}{COMMA16}
-STR_2224 :{WINDOW_COLOUR_2}Cash: {BLACK}{CURRENCY2DP}
-STR_2225 :{WINDOW_COLOUR_2}Cash: {RED}{CURRENCY2DP}
-STR_2226 :{WINDOW_COLOUR_2}Park value: {BLACK}{CURRENCY}
-STR_2227 :{WINDOW_COLOUR_2}Company value: {BLACK}{CURRENCY}
+STR_2224 :{WINDOW_COLOUR_2}Argent: {BLACK}{CURRENCY2DP}
+STR_2225 :{WINDOW_COLOUR_2}Argent: {RED}{CURRENCY2DP}
+STR_2226 :{WINDOW_COLOUR_2}Valeur du parc: {BLACK}{CURRENCY}
+STR_2227 :{WINDOW_COLOUR_2}Valeur de l'entreprise: {BLACK}{CURRENCY}
STR_2228 :{WINDOW_COLOUR_2}Last month's profit from food/drink and{NEWLINE}merchandise sales: {BLACK}{CURRENCY}
STR_2229 :Slope up to vertical
STR_2230 :Vertical track
@@ -2237,62 +2237,62 @@ STR_2232 :Cable lift hill
STR_2233 :{SMALLFONT}{BLACK}Park information
STR_2234 :Recent Messages
STR_2235 :{SMALLFONT}{STRINGID} {STRINGID}
-STR_2236 :January
-STR_2237 :February
-STR_2238 :March
-STR_2239 :April
-STR_2240 :May
-STR_2241 :June
-STR_2242 :July
-STR_2243 :August
-STR_2244 :September
-STR_2245 :October
-STR_2246 :November
-STR_2247 :December
+STR_2236 :Janvier
+STR_2237 :Février
+STR_2238 :Mars
+STR_2239 :Avril
+STR_2240 :Mai
+STR_2241 :Juin
+STR_2242 :Juillet
+STR_2243 :Août
+STR_2244 :Septembre
+STR_2245 :Octobre
+STR_2246 :Novembre
+STR_2247 :Décembre
STR_2248 :Can't demolish ride/attraction...
STR_2249 :{BABYBLUE}New ride/attraction now available:-{NEWLINE}{STRINGID}
STR_2250 :{BABYBLUE}New scenery/themeing now available:-{NEWLINE}{STRINGID}
STR_2251 :Can only be built on paths!
STR_2252 :Can only be built across paths!
-STR_2253 :Transport Rides
-STR_2254 :Gentle Rides
-STR_2255 :Roller Coasters
-STR_2256 :Thrill Rides
-STR_2257 :Water Rides
-STR_2258 :Shops & Stalls
-STR_2259 :Scenery & Themeing
-STR_2260 :No funding
-STR_2261 :Minimum funding
-STR_2262 :Normal funding
-STR_2263 :Maximum funding
+STR_2253 :Attractions de transport
+STR_2254 :Attractions tranquilles
+STR_2255 :Montagnes russes
+STR_2256 :Attractions frisson
+STR_2257 :Attractions aquatiques
+STR_2258 :Magasins et boutiques
+STR_2259 :Décor et thèmes
+STR_2260 :Aucun financement
+STR_2261 :Financement minimum
+STR_2262 :Financement normal
+STR_2263 :Financement maximum
STR_2264 :Research funding
-STR_2265 :{WINDOW_COLOUR_2}Cost: {BLACK}{CURRENCY} per month
-STR_2266 :Research priorities
-STR_2267 :Currently in development
-STR_2268 :Last development
+STR_2265 :{WINDOW_COLOUR_2}Coût: {BLACK}{CURRENCY} par mois
+STR_2266 :Priorités recherches
+STR_2267 :En cours de développement
+STR_2268 :Dernier développement
STR_2269 :{WINDOW_COLOUR_2}Type: {BLACK}{STRINGID}
-STR_2270 :{WINDOW_COLOUR_2}Progress: {BLACK}{STRINGID}
-STR_2271 :{WINDOW_COLOUR_2}Expected: {BLACK}{STRINGID}
+STR_2270 :{WINDOW_COLOUR_2}Progression: {BLACK}{STRINGID}
+STR_2271 :{WINDOW_COLOUR_2}Fin prévue: {BLACK}{STRINGID}
STR_2272 :{WINDOW_COLOUR_2}Ride/attraction:{NEWLINE}{BLACK}{STRINGID}
STR_2273 :{WINDOW_COLOUR_2}Scenery/themeing:{NEWLINE}{BLACK}{STRINGID}
STR_2274 :{SMALLFONT}{BLACK}Show details of this invention or development
STR_2275 :{SMALLFONT}{BLACK}Show funding and options for research & development
STR_2276 :{SMALLFONT}{BLACK}Show research & development status
-STR_2277 :Unknown
-STR_2278 :Transport Ride
-STR_2279 :Gentle Ride
-STR_2280 :Roller Coaster
-STR_2281 :Thrill Ride
-STR_2282 :Water Ride
-STR_2283 :Shop/Stall
-STR_2284 :Scenery/Themeing
+STR_2277 :Inconnu
+STR_2278 :Attraction de transport
+STR_2279 :Attraction tranquille
+STR_2280 :Montagne russe
+STR_2281 :Attraction frisson
+STR_2282 :Attraction aquatique
+STR_2283 :Magasins et boutiques
+STR_2284 :Décor et thèmes
STR_2285 :Initial research
STR_2286 :Designing
STR_2287 :Completing design
STR_2288 :Unknown
STR_2289 :{STRINGID} {STRINGID}
STR_2290 :{SMALLFONT}{BLACK}{STRINGID} {STRINGID}
-STR_2291 :Select scenario for new game
+STR_2291 :Choisir scénario pour nouvelle partie
STR_2292 :{WINDOW_COLOUR_2}Rides been on:
STR_2293 :{BLACK} Nothing
STR_2294 :{SMALLFONT}{BLACK}Change base land style
@@ -2385,7 +2385,7 @@ STR_2380 :{SMALLFONT}{BLACK}Adjust smaller area of water
STR_2381 :{SMALLFONT}{BLACK}Adjust larger area of water
STR_2382 :Land
STR_2383 :Water
-STR_2384 :{WINDOW_COLOUR_2}Your objective:
+STR_2384 :{WINDOW_COLOUR_2}Votre objectif:
STR_2385 :{BLACK}None
STR_2386 :{BLACK}To have at least {COMMA16} guests in your park at the end of {MONTHYEAR}, with a park rating of at least 600
STR_2387 :{BLACK}To achieve a park value of at least {POP16}{POP16}{CURRENCY} at the end of {PUSH16}{PUSH16}{PUSH16}{MONTHYEAR}
@@ -2393,7 +2393,7 @@ STR_2388 :{BLACK}Have Fun!
STR_2389 :{BLACK}Build the best {STRINGID} you can!
STR_2390 :{BLACK}To have 10 different types of roller coasters operating in your park, each with an excitement value of at least 6.00
STR_2391 :{BLACK}To have at least {COMMA16} guests in your park. You must not let the park rating drop below 700 at any time!
-STR_2392 :{BLACK}To achieve a monthly income from ride tickets of at least {POP16}{POP16}{CURRENCY}
+STR_2392 :{BLACK}Obtenir un revenu mensuel avec les tickets d'attraction d'au moins {POP16}{POP16}{CURRENCY}
STR_2393 :{BLACK}To have 10 different types of roller coasters operating in your park, each with a minimum length of {LENGTH}, and an excitement rating of at least 7.00
STR_2394 :{BLACK}To finish building all 5 of the partially built roller coasters in this park, designing them to achieve excitement ratings of at least {POP16}{POP16}{COMMA2DP32} each
STR_2395 :{BLACK}To repay your loan and achieve a park value of at least {POP16}{POP16}{CURRENCY}
@@ -2410,13 +2410,13 @@ STR_2405 :Build 10 roller coasters of a given length
STR_2406 :Finish building 5 roller coasters
STR_2407 :Repay loan and achieve a given park value
STR_2408 :Monthly profit from food/merchandise
-STR_2409 :{WINDOW_COLOUR_2}Marketing campaigns in operation
-STR_2410 :{BLACK}None
-STR_2411 :{WINDOW_COLOUR_2}Marketing campaigns available
-STR_2412 :{SMALLFONT}{BLACK}Start this marketing campaign
+STR_2409 :{WINDOW_COLOUR_2}Campagnes marketing en cours
+STR_2410 :{BLACK}Aucune
+STR_2411 :{WINDOW_COLOUR_2}Campagnes marrketing disponibles
+STR_2412 :{SMALLFONT}{BLACK}Commencer campagne marketing
STR_2413 :{BLACK}({CURRENCY2DP} per week)
STR_2414 :(Not Selected)
-STR_2415 :{WINDOW_COLOUR_2}Ride:
+STR_2415 :{WINDOW_COLOUR_2}Attraction:
STR_2416 :{WINDOW_COLOUR_2}Item:
STR_2417 :{WINDOW_COLOUR_2}Length of time:
STR_2418 :Free entry to {STRINGID}
@@ -2426,35 +2426,35 @@ STR_2421 :Free {STRINGID}
STR_2422 :Advertising campaign for {STRINGID}
STR_2423 :Advertising campaign for {STRINGID}
STR_2424 :{WINDOW_COLOUR_2}Vouchers for free entry to the park
-STR_2425 :{WINDOW_COLOUR_2}Vouchers for free rides on a particular ride
+STR_2425 :{WINDOW_COLOUR_2}Bons pour une attraction gratuite
STR_2426 :{WINDOW_COLOUR_2}Vouchers for half-price entry to the park
-STR_2427 :{WINDOW_COLOUR_2}Vouchers for free food or drink
-STR_2428 :{WINDOW_COLOUR_2}Advertising campaign for the park
-STR_2429 :{WINDOW_COLOUR_2}Advertising campaign for a particular ride
+STR_2427 :{WINDOW_COLOUR_2}Bons pour nourriture/boisson gratuites
+STR_2428 :{WINDOW_COLOUR_2}Campagne publicitaire pour le parc
+STR_2429 :{WINDOW_COLOUR_2}Campagne publicitaire pour une attraction
STR_2430 :{BLACK}Vouchers for free entry to {STRINGID}
STR_2431 :{BLACK}Vouchers for free ride on {STRINGID}
STR_2432 :{BLACK}Vouchers for half-price entry to {STRINGID}
STR_2433 :{BLACK}Vouchers for free {STRINGID}
STR_2434 :{BLACK}Advertising campaign for {STRINGID}
STR_2435 :{BLACK}Advertising campaign for {STRINGID}
-STR_2436 :1 week
-STR_2437 :2 weeks
-STR_2438 :3 weeks
-STR_2439 :4 weeks
-STR_2440 :5 weeks
-STR_2441 :6 weeks
+STR_2436 :1 semaine
+STR_2437 :2 semaines
+STR_2438 :3 semaines
+STR_2439 :4 semaines
+STR_2440 :5 semaines
+STR_2441 :6 semaines
STR_2442 :{BLACK}({STRINGID} remaining)
STR_2443 :{WINDOW_COLOUR_2}Cost per week: {BLACK}{CURRENCY2DP}
STR_2444 :{WINDOW_COLOUR_2}Total cost: {BLACK}{CURRENCY2DP}
-STR_2445 :Start this marketing campaign
+STR_2445 :Commencer campagne marketing
STR_2446 :{YELLOW}Your marketing campaign for free entry to the park has finished
STR_2447 :{YELLOW}Your marketing campaign for free rides on {STRINGID} has finished
STR_2448 :{YELLOW}Your marketing campaign for half-price entry to the park has finished
STR_2449 :{YELLOW}Your marketing campaign for free {STRINGID} has finished
STR_2450 :{YELLOW}Your advertising campaign for the park has finished
STR_2451 :{YELLOW}Your advertising campaign for {STRINGID} has finished
-STR_2452 :{WINDOW_COLOUR_2}Cash (less loan): {BLACK}{CURRENCY2DP}
-STR_2453 :{WINDOW_COLOUR_2}Cash (less loan): {RED}{CURRENCY2DP}
+STR_2452 :{WINDOW_COLOUR_2}Argent (moins l'emprunt): {BLACK}{CURRENCY2DP}
+STR_2453 :{WINDOW_COLOUR_2}Argent (moins l'emprunt): {RED}{CURRENCY2DP}
STR_2454 :{SMALLFONT}{BLACK}{CURRENCY2DP} -
STR_2455 :{SMALLFONT}{BLACK}+{CURRENCY2DP} -
STR_2456 :{SMALLFONT}{BLACK}{CURRENCY2DP} -
@@ -2483,12 +2483,12 @@ STR_2478 :{SMALLFONT}{BLACK}Show graph of velocity against time
STR_2479 :{SMALLFONT}{BLACK}Show graph of altitude against time
STR_2480 :{SMALLFONT}{BLACK}Show graph of vertical acceleration against time
STR_2481 :{SMALLFONT}{BLACK}Show graph of lateral acceleration against time
-STR_2482 :{SMALLFONT}{BLACK}Profit: {CURRENCY} per week, Park Value: {CURRENCY}
+STR_2482 :{SMALLFONT}{BLACK}Bénéfice: {CURRENCY} par semaine, Valeur du parc: {CURRENCY}
STR_2483 :{WINDOW_COLOUR_2}Weekly profit: {BLACK}+{CURRENCY2DP}
STR_2484 :{WINDOW_COLOUR_2}Weekly profit: {RED}{CURRENCY2DP}
STR_2485 :Controls
STR_2486 :General
-STR_2487 :Show 'real' names of guests
+STR_2487 :Afficher le 'vrai' nom des visiteurs
STR_2488 :{SMALLFONT}{BLACK}Toggle between showing 'real' names of guests and guest numbers
STR_2489 :Shortcut keys...
STR_2490 :Keyboard shortcuts
@@ -2525,7 +2525,7 @@ STR_2520 :Show guest list
STR_2521 :Show staff list
STR_2522 :Show recent messages
STR_2523 :Show map
-STR_2524 :Screenshot
+STR_2524 :Capture d'écran
STR_2525 :???
STR_2526 :???
STR_2527 :???
@@ -2851,7 +2851,7 @@ STR_2844 :{TOPAZ}Your park has received an award for being 'The park with the
STR_2845 :{TOPAZ}Your park has received an award for being 'The park with the most dazzling choice of color schemes'!
STR_2846 :{TOPAZ}Your park has received an award for being 'The park with the most confusing layout'!
STR_2847 :{TOPAZ}Your park has received an award for being 'The park with the best gentle rides'!
-STR_2848 :{WINDOW_COLOUR_2}No recent awards
+STR_2848 :{WINDOW_COLOUR_2}Pas de récompense récente
STR_2849 :New scenario installed successfully
STR_2850 :New track design installed successfully
STR_2851 :Scenario already installed
@@ -2865,8 +2865,8 @@ STR_2858 :Can't start marketing campaign...
STR_2859 :Another instance of RollerCoaster Tycoon 2 is already running
STR_2860 :Infogrames Interactive credits...
STR_2861 :{WINDOW_COLOUR_2}Licensed to Infogrames Interactive Inc.
-STR_2862 :Music acknowledgements...
-STR_2863 :Music acknowledgements
+STR_2862 :Remerciements musique...
+STR_2863 :Remerciements musique
STR_2864 :{WINDOW_COLOUR_2}March - Children of the Regiment: (Fucik) non copyright
STR_2865 :{WINDOW_COLOUR_2}Heyken's Serenade: (J.Heyken) British Standard Music Coy; GEMA, BRITICO
STR_2866 :{WINDOW_COLOUR_2}In Continental Mood: (Composer unknown) Copyright Control
@@ -3067,11 +3067,11 @@ STR_3060 :Ice blocks
STR_3061 :Wooden fences
STR_3062 :{SMALLFONT}{BLACK}Standard roller coaster track
STR_3063 :{SMALLFONT}{BLACK}Water channel (track submerged)
-STR_3064 :Beginner Parks
-STR_3065 :Challenging Parks
-STR_3066 :Expert Parks
-STR_3067 :{OPENQUOTES}Real{ENDQUOTES} Parks
-STR_3068 :Other Parks
+STR_3064 :Parcs débutants
+STR_3065 :Parcs moyens
+STR_3066 :Parcs experts
+STR_3067 :Parcs {OPENQUOTES}Réels{ENDQUOTES}
+STR_3068 :Autres parcs
STR_3069 :Top Section
STR_3070 :Slope to Level
STR_3071 :{WINDOW_COLOUR_2}Same price throughout park
@@ -3110,9 +3110,9 @@ STR_3103 :Can't re-paint this...
STR_3104 :{SMALLFONT}{BLACK}List rides
STR_3105 :{SMALLFONT}{BLACK}List shops and stalls
STR_3106 :{SMALLFONT}{BLACK}List information kiosks and other guest facilities
-STR_3107 :Close
-STR_3108 :Test
-STR_3109 :Open
+STR_3107 :Fermer
+STR_3108 :Tester
+STR_3109 :Ouvrir
STR_3110 :{WINDOW_COLOUR_2}Block Sections: {BLACK}{COMMA16}
STR_3111 :{SMALLFONT}{BLACK}Click on design to build it
STR_3112 :{SMALLFONT}{BLACK}Click on design to rename or delete it
@@ -3163,7 +3163,7 @@ STR_3156 :
STR_3157 :map
STR_3158 :graph
STR_3159 :list
-STR_3160 :RollerCoaster Tycoon 2: Starting for the first time...
+STR_3160 :RollerCoaster Tycoon 2: Première visite...
STR_3161 :RollerCoaster Tycoon 2: Checking object files...
STR_3162 :Unable to allocate enough memory
STR_3163 :Installing new data:
@@ -3184,75 +3184,75 @@ STR_3177 :Unable to de-select this object
STR_3178 :At least one path object must be selected
STR_3179 :At least one ride vehicle/attraction object must be selected
STR_3180 :Invalid selection of objects
-STR_3181 :Object Selection - {STRINGID}
+STR_3181 :Sélection d'object - {STRINGID}
STR_3182 :Park entrance type must be selected
STR_3183 :Water type must be selected
-STR_3184 :Ride Vehicles/Attractions
-STR_3185 :Small Scenery
-STR_3186 :Large Scenery
-STR_3187 :Walls/Fences
-STR_3188 :Path Signs
-STR_3189 :Footpaths
-STR_3190 :Path Extras
-STR_3191 :Scenery Groups
-STR_3192 :Park Entrance
-STR_3193 :Water
+STR_3184 :Véhicules/Attractions
+STR_3185 :Petit décor
+STR_3186 :Grand décor
+STR_3187 :Murs/Clôtures
+STR_3188 :Panneaux de direction
+STR_3189 :Allées
+STR_3190 :Suppléments allées
+STR_3191 :Groupes de décor
+STR_3192 :Entrée du parc
+STR_3193 :Etendue d'eau
STR_3194 :Scenario Description
-STR_3195 :Invention List
-STR_3196 :{WINDOW_COLOUR_2}Research Group: {BLACK}{STRINGID}
-STR_3197 :{WINDOW_COLOUR_2}Items pre-invented at start of game:
-STR_3198 :{WINDOW_COLOUR_2}Items to invent during game:
-STR_3199 :Random Shuffle
-STR_3200 :{SMALLFONT}{BLACK}Randomly shuffle the list of items to invent during the game
-STR_3201 :Object Selection
-STR_3202 :Landscape Editor
-STR_3203 :Invention List Set Up
-STR_3204 :Options Selection
+STR_3195 :Liste d'inventions
+STR_3196 :{WINDOW_COLOUR_2}Groupe de recherche: {BLACK}{STRINGID}
+STR_3197 :{WINDOW_COLOUR_2}Eléments pré-inventés au début d'une partie:
+STR_3198 :{WINDOW_COLOUR_2}Eléments à inventer pendant la partie:
+STR_3199 :Choix aléatoire
+STR_3200 :{SMALLFONT}{BLACK}Définissez de manière aléatoire la liste d'éléments à inventer pendant la partie
+STR_3201 :Sélection des objets
+STR_3202 :Editeur de paysage
+STR_3203 :Liste d'inventions
+STR_3204 :Sélection des options
STR_3205 :Objective Selection
-STR_3206 :Save Scenario
+STR_3206 :Sauvegarder scénario
STR_3207 :Roller Coaster Designer
STR_3208 :Track Designs Manager
-STR_3209 :Back to Previous Step:
-STR_3210 :Forward to Next Step:
-STR_3211 :{WINDOW_COLOUR_2}Map size:
+STR_3209 :Retour étape précédente:
+STR_3210 :Passer à l'étape suivante:
+STR_3211 :{WINDOW_COLOUR_2}Taille carte:
STR_3212 :{POP16}{COMMA16} x {PUSH16}{COMMA16}
-STR_3213 :Can't decrease map size any further
-STR_3214 :Can't increase map size any further
+STR_3213 :Impossible de diminuer davantage la taille de la carte
+STR_3214 :Impossible d'augmenter davantage la taille de le carte
STR_3215 :Too close to edge of map
-STR_3216 :{SMALLFONT}{BLACK}Select park-owned land etc.
-STR_3217 :Land Owned
-STR_3218 :Construction Rights Owned
-STR_3219 :Land For Sale
-STR_3220 :Construction Rights For Sale
-STR_3221 :{SMALLFONT}{BLACK}Set land to be owned by the park
-STR_3222 :{SMALLFONT}{BLACK}Set construction rights only to be owned by the park
-STR_3223 :{SMALLFONT}{BLACK}Set land to be available to purchase by the park
-STR_3224 :{SMALLFONT}{BLACK}Set construction rights to be available to purchase by the park
+STR_3216 :{SMALLFONT}{BLACK}Choisir terrain du parc etc.
+STR_3217 :Terrain du parc
+STR_3218 :Droits de constr. du parc
+STR_3219 :Terrain à vendre
+STR_3220 :Droits constr. à vendre
+STR_3221 :{SMALLFONT}{BLACK}Définir le terrain sur lequel s'étend le parc
+STR_3222 :{SMALLFONT}{BLACK}Définir les droits de construction exclusifs du parc
+STR_3223 :{SMALLFONT}{BLACK}Définir le terrain disponible à l'achat
+STR_3224 :{SMALLFONT}{BLACK}Définir les droits de construction disponibles à l'achat
STR_3225 :{SMALLFONT}{BLACK}Toggle on/off building a random cluster of objects around the selected position
-STR_3226 :{SMALLFONT}{BLACK}Build park entrance
-STR_3227 :Too many park entrances!
-STR_3228 :{SMALLFONT}{BLACK}Set starting positions for people
+STR_3226 :{SMALLFONT}{BLACK}Construire entrée parc
+STR_3227 :Trop d'entrée de parc
+STR_3228 :{SMALLFONT}{BLACK}Définir position de départ pour les visiteurs
STR_3229 :Block Brakes cannot be used directly after station
STR_3230 :Block Brakes cannot be used directly after each other
STR_3231 :Block Brakes cannot be used directly after the top of this lift hill
-STR_3232 :Options - Financial
-STR_3233 :Options - Guests
-STR_3234 :Options - Park
-STR_3235 :{SMALLFONT}{BLACK}Show financial options
-STR_3236 :{SMALLFONT}{BLACK}Show guest options
-STR_3237 :{SMALLFONT}{BLACK}Show park options
-STR_3238 :No Money
-STR_3239 :{SMALLFONT}{BLACK}Make this park a 'no money' park with no financial restrictions
-STR_3240 :{WINDOW_COLOUR_2}Initial cash:
-STR_3241 :{WINDOW_COLOUR_2}Initial loan:
-STR_3242 :{WINDOW_COLOUR_2}Maximum loan size:
-STR_3243 :{WINDOW_COLOUR_2}Annual interest rate:
-STR_3244 :Forbid marketing campaigns
-STR_3245 :{SMALLFONT}{BLACK}Forbid advertising, promotional schemes, and other marketing campaigns
+STR_3232 :Options - Finances
+STR_3233 :Options - Visiteurs
+STR_3234 :Options - Parc
+STR_3235 :{SMALLFONT}{BLACK}Voir les options financières
+STR_3236 :{SMALLFONT}{BLACK}Voir les options des visiteurs
+STR_3237 :{SMALLFONT}{BLACK}Voir les options du parc
+STR_3238 :Pas d'argent
+STR_3239 :{SMALLFONT}{BLACK}Faire de ce parc un parc 'sans argent' sans restriction financière
+STR_3240 :{WINDOW_COLOUR_2}Argent initial:
+STR_3241 :{WINDOW_COLOUR_2}Emprunt initial:
+STR_3242 :{WINDOW_COLOUR_2}Emprunt maximum:
+STR_3243 :{WINDOW_COLOUR_2}Taux d'int. annuel:
+STR_3244 :Interdire campagnes marketing
+STR_3245 :{SMALLFONT}{BLACK}Interdire la publicité, les opérations promotionnelles et autres campagnes marketing
STR_3246 :{WINDOW_COLOUR_2}{CURRENCY}
STR_3247 :{WINDOW_COLOUR_2}{COMMA16}%
-STR_3248 :Can't increase initial cash any further!
-STR_3249 :Can't reduce initial cash any further!
+STR_3248 :Impossible d'augmenter davantage la somme d'argent initiale !
+STR_3249 :Impossible de diminuer davantage la somme d'argent initiale !
STR_3250 :Can't increase initial loan any further!
STR_3251 :Can't reduce initial loan any further!
STR_3252 :Can't increase maximum loan size any further!
@@ -3263,53 +3263,53 @@ STR_3256 :Guests prefer less intense rides
STR_3257 :{SMALLFONT}{BLACK}Select whether guests should generally prefer less intense rides only
STR_3258 :Guests prefer more intense rides
STR_3259 :{SMALLFONT}{BLACK}Select whether guests should generally prefer more intense rides only
-STR_3260 :{WINDOW_COLOUR_2}Cash per guest (average):
-STR_3261 :{WINDOW_COLOUR_2}Guests initial happiness:
-STR_3262 :{WINDOW_COLOUR_2}Guests initial hunger:
-STR_3263 :{WINDOW_COLOUR_2}Guests initial thirst:
-STR_3264 :Can't increase this any further!
-STR_3265 :Can't reduce this any further!
+STR_3260 :{WINDOW_COLOUR_2}Argent par visiteur (moy.):
+STR_3261 :{WINDOW_COLOUR_2}Bonheur initial:
+STR_3262 :{WINDOW_COLOUR_2}Faim initiale:
+STR_3263 :{WINDOW_COLOUR_2}Soif initiale:
+STR_3264 :Impossible d'augmenter davantage!
+STR_3265 :Impossible de diminuer davantage!
STR_3266 :{SMALLFONT}{BLACK}Select how this park charges for entrance and rides
-STR_3267 :Forbid tree removal
+STR_3267 :Interdire le déracinement d'arbres
STR_3268 :{SMALLFONT}{BLACK}Forbid tall trees being removed
-STR_3269 :Forbid landscape changes
+STR_3269 :Interdire les modifications du paysage
STR_3270 :{SMALLFONT}{BLACK}Forbid any changes to the landscape
-STR_3271 :Forbid high construction
+STR_3271 :Interdire les constructions hautes
STR_3272 :{SMALLFONT}{BLACK}Forbid any tall construction
-STR_3273 :Park rating higher difficult level
+STR_3273 :Niveau de difficulté supérieur pour fréquentation
STR_3274 :{SMALLFONT}{BLACK}Make the park rating value more challenging
STR_3275 :Guest generation higher difficult level
STR_3276 :{SMALLFONT}{BLACK}Make it more difficult to attract guests to the park
-STR_3277 :{WINDOW_COLOUR_2}Cost to buy land:
-STR_3278 :{WINDOW_COLOUR_2}Cost to buy construction rights:
+STR_3277 :{WINDOW_COLOUR_2}Coût d'achat de terrain:
+STR_3278 :{WINDOW_COLOUR_2}Coût d'achat droits de constr.:
STR_3279 :Free park entry / Pay per ride
STR_3280 :Pay to enter park / Free rides
-STR_3281 :{WINDOW_COLOUR_2}Entry price:
-STR_3282 :{SMALLFONT}{BLACK}Select objective and park name
+STR_3281 :{WINDOW_COLOUR_2}Prix d'entrée:
+STR_3282 :{SMALLFONT}{BLACK}Choisir objectif et nom du parc
STR_3283 :{SMALLFONT}{BLACK}Select rides to be preserved
-STR_3284 :Objective Selection
+STR_3284 :Sélection des objectifs
STR_3285 :Preserved Rides
STR_3286 :{SMALLFONT}{BLACK}Select objective for this scenario
-STR_3287 :{WINDOW_COLOUR_2}Objective:
+STR_3287 :{WINDOW_COLOUR_2}Objectif:
STR_3288 :{SMALLFONT}{BLACK}Select climate
-STR_3289 :{WINDOW_COLOUR_2}Climate:
-STR_3290 :Cool and wet
-STR_3291 :Warm
-STR_3292 :Hot and dry
-STR_3293 :Cold
-STR_3294 :Change...
+STR_3289 :{WINDOW_COLOUR_2}Climat:
+STR_3290 :Frais et humide
+STR_3291 :Chaud
+STR_3292 :Chaud et sec
+STR_3293 :Froid
+STR_3294 :Modifier...
STR_3295 :{SMALLFONT}{BLACK}Change name of park
STR_3296 :{SMALLFONT}{BLACK}Change name of scenario
STR_3297 :{SMALLFONT}{BLACK}Change detail notes about park / scenario
-STR_3298 :{WINDOW_COLOUR_2}Park Name: {BLACK}{STRINGID}
+STR_3298 :{WINDOW_COLOUR_2}Nom du parc: {BLACK}{STRINGID}
STR_3299 :{WINDOW_COLOUR_2}Park/Scenario Details:
-STR_3300 :{WINDOW_COLOUR_2}Scenario Name: {BLACK}{STRINGID}
-STR_3301 :{WINDOW_COLOUR_2}Objective Date:
+STR_3300 :{WINDOW_COLOUR_2}Nom du scénario: {BLACK}{STRINGID}
+STR_3301 :{WINDOW_COLOUR_2}Date objectif:
STR_3302 :{WINDOW_COLOUR_2}{MONTHYEAR}
-STR_3303 :{WINDOW_COLOUR_2}Number of guests:
-STR_3304 :{WINDOW_COLOUR_2}Park value:
+STR_3303 :{WINDOW_COLOUR_2}Nombre de visiteurs:
+STR_3304 :{WINDOW_COLOUR_2}Valeur du parc:
STR_3305 :{WINDOW_COLOUR_2}Monthly income:
-STR_3306 :{WINDOW_COLOUR_2}Monthly profit:
+STR_3306 :{WINDOW_COLOUR_2}Bénéfice mensuel:
STR_3307 :{WINDOW_COLOUR_2}Minimum length:
STR_3308 :{WINDOW_COLOUR_2}Excitement rating:
STR_3309 :{WINDOW_COLOUR_2}{COMMA16}
@@ -3319,8 +3319,8 @@ STR_3312 :{WINDOW_COLOUR_2}Rides/attractions under a preservation order:
STR_3313 :Scenario Name
STR_3314 :Enter name for scenario:-
STR_3315 :Park/Scenario Details
-STR_3316 :Enter description of this scenario:-
-STR_3317 :No details yet
+STR_3316 :Décrire ce scénario:-
+STR_3317 :Pas de détails
STR_3318 :{SMALLFONT}{BLACK}Select which group this scenario appears in
STR_3319 :{WINDOW_COLOUR_2}Scenario Group:
STR_3320 :Unable to save scenario file...
@@ -3344,11 +3344,11 @@ STR_3337 :Six Flags Park
STR_3338 :{BLACK}Custom-designed layout
STR_3339 :{BLACK}{COMMA16} design available, or custom-designed layout
STR_3340 :{BLACK}{COMMA16} designs available, or custom-designed layout
-STR_3341 :{SMALLFONT}{BLACK}Game tools
-STR_3342 :Scenario Editor
-STR_3343 :Convert Saved Game to Scenario
-STR_3344 :Roller Coaster Designer
-STR_3345 :Track Designs Manager
+STR_3341 :{SMALLFONT}{BLACK}Outils
+STR_3342 :Editeur de scénario
+STR_3343 :Convertir partie sauvegardée en scénario
+STR_3344 :Concepteur de montages russes
+STR_3345 :Gestionnaire de voies
STR_3346 :Can't save track design...
STR_3347 :Ride is too large, contains too many elements, or scenery is too spread out
STR_3348 :Rename
@@ -3442,7 +3442,7 @@ STR_3435 :{SMALLFONT}{BLACK}Great - It worked! Let's add the footpaths and le
STR_3436 :{SMALLFONT}{BLACK}While waiting for our first riders, we could customize the ride a bit...
STR_3437 :{SMALLFONT}{BLACK}Clear large areas of scenery from landscape
STR_3438 :Unable to remove all scenery from here...
-STR_3439 :Clear Scenery
+STR_3439 :Effacer décor
STR_3440 :Page 1
STR_3441 :Page 2
STR_3442 :Page 3
diff --git a/install.sh b/install.sh
index f74e9bcf92..3439d41eef 100755
--- a/install.sh
+++ b/install.sh
@@ -1,7 +1,5 @@
#!/bin/bash
-set -e
-
SDL2_PV=2.0.3
cachedir=.cache
@@ -11,13 +9,44 @@ echo `uname`
if [[ `uname` == "Darwin" ]]; then
echo "Installation of OpenRCT2 assumes you have homebrew and use it to install packages."
+
+ echo "Check if brew is installed"
+ package_command="brew"
+ which -s brew
+ if [ $? -eq 1 ]; then
+ echo "brew is not installed, or is not in your \$PATH"
+ echo "Check if MacPorts is installed"
+ which -s port
+ if [ $? -eq 1 ]; then
+ echo "MacPorts not found either, abort"
+ exit
+ else
+ echo "MacPorts found"
+ package_command="sudo port"
+ fi
+ else
+ echo "brew was found"
+ fi
+
+ echo "Check if wget is installed"
+ which -s wget
+ if [ $? -eq 1 ]; then
+ echo "wget is not installed, installing wget.."
+ eval "$package_command install wget"
+ fi
+
+ # Install packages with whatever command was found.
# Very possible I'm missing some dependencies here.
- brew install cmake wine
+ eval "$package_command install cmake wine"
if [[ ! -d /usr/include/wine ]]; then
# This will almost certainly break as brew changes. Better ideas
# welcome.
- sudo ln -s /usr/local/Cellar/wine/1.6.2/include/wine /usr/include
+ wine_path="/usr/local/Cellar/wine/1.6.2/include/wine"
+ if [ $package_command == "sudo port" ]; then
+ wine_path="/opt/local/include/wine"
+ fi
+ sudo ln -s $wine_path /usr/include
fi
mingw_dmg=gcc-4.8.0-qt-4.8.4-for-mingw32.dmg
@@ -68,7 +97,7 @@ if [[ ! -f $cachedir/i686-w64-mingw32-pkg-config ]]; then
# If this fails to work because of newlines, be sure you are running this
# script with Bash, and not sh. We should really move this to a separate
# file.
- echo -e "#! /bin/sh\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\npkg-config \$@" > $cachedir/i686-w64-mingw32-pkg-config;
+ echo -e "#!/bin/sh\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\npkg-config \$@" > $cachedir/i686-w64-mingw32-pkg-config;
fi
chmod +x $cachedir/i686-w64-mingw32-pkg-config
diff --git a/projects/openrct2.vcxproj b/projects/openrct2.vcxproj
index 55b64865eb..ce7c4ed569 100644
--- a/projects/openrct2.vcxproj
+++ b/projects/openrct2.vcxproj
@@ -123,6 +123,7 @@
+
diff --git a/projects/openrct2.vcxproj.filters b/projects/openrct2.vcxproj.filters
index 65ac515497..6ae0ef6755 100644
--- a/projects/openrct2.vcxproj.filters
+++ b/projects/openrct2.vcxproj.filters
@@ -368,6 +368,9 @@
Windows
+
+ Windows
+
diff --git a/readme.md b/readme.md
index 316a1efc44..403ce159c5 100644
--- a/readme.md
+++ b/readme.md
@@ -36,7 +36,7 @@ The project therefore acts as a patch to RollerCoaster Tycoon 2, allowing each p
## 1.3 Progress
Currently, the windowing system, graphics rendering and basic game loop are being decompiled. Decompiling all of the game's procedures is a convenient way of identifying the game's memory structure. SDL2 has been used as a replacement for the operating system calls, allowing for cross-platform support after the dependency on the original game's executable has been removed.
-As of 16th August 2014, various UI improvements have already been made, settings are now stored in a local INI file. More drawing functions have now been decompiled but still remain cryptic C, much of the game management have been decompiled (e.g. peep generation, awards, cash out) and almost half of the windows. A rough estimate based on number of functions in the original game and number of functions now in C tells us that the project is approximately 25% complete of its target goal of haivng the game run on 100% C code. More information can be found in [changes to original game](https://github.com/IntelOrca/OpenRCT2/wiki/Changes-to-original-game) and [window progress](https://github.com/IntelOrca/OpenRCT2/wiki/Window-progress).
+As of 16th August 2014, various UI improvements have already been made, settings are now stored in a local INI file. More drawing functions have now been decompiled but still remain cryptic C, much of the game management have been decompiled (e.g. peep generation, awards, cash out) and almost half of the windows. A rough estimate based on number of functions in the original game and number of functions now in C tells us that the project is approximately 25% complete of its target goal of having the game run on 100% C code. More information can be found in [changes to original game](https://github.com/IntelOrca/OpenRCT2/wiki/Changes-to-original-game) and [window progress](https://github.com/IntelOrca/OpenRCT2/wiki/Window-progress).
## 1.4 Aim
The aim is to completely decompile RollerCoaster Tycoon 2 into C so that cross-platform support, new features, and new gameplay can be added in a similar fashion to OpenTTD. With the addition of SDL2, the game can already be run in a resizeable window (which was not possible originally). Once the game has been fully decompiled, additional gameplay features, gameplay tweaks, and improvements can be introduced. The following is only a brief, non-exhaustive list of the possibilities - there is much more possible:
@@ -60,9 +60,13 @@ The aim is to completely decompile RollerCoaster Tycoon 2 into C so that cross-p
- Visual Studio 2013 (paid) / [Visual Studio Express 2013](http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop) (free)
- [SDL2 development library for Visual C++](http://www.libsdl.org/release/SDL2-devel-2.0.3-VC.zip).
-### Linux:
+### Max OS X:
+- [Homebrew](http://brew.sh)
+- RollerCoaster Tycoon 2
+
+### Mac OS X / Linux:
- [MinGW-w64](mingw-w64.sourceforge.net)
-- [Wine](http://www.winehq.org/)
+- [Wine](http://www.winehq.org)
- RollerCoaster Tycoon 2
- libsdl2 compiled with MinGW-w64
@@ -76,6 +80,14 @@ The aim is to completely decompile RollerCoaster Tycoon 2 into C so that cross-p
6. When OpenRCT2 is run for the first time, it creates a settings file in `My Documents/OpenRCT2`. If it can't find the original installation of RCT2, you will need to edit `config.ini` in that folder and change the value of `game_path` to where RCT2 is installed.
7. If the game crashes, you may need to press the red, square Stop button along the top of VS Express to stop the program.
+### Mac OS X:
+Providing Homebrew is installed, OpenRCT2's dependencies and Wine can be installed automatically through `install.sh`.
+```
+bash install.sh
+bash build.sh
+wine openrct2.exe
+```
+
### Linux:
As the easiest approach depends on your distribution, please take a look at the [wiki](https://github.com/IntelOrca/OpenRCT2/wiki).
diff --git a/src/game.c b/src/game.c
index 1206470e4e..78bf73770f 100644
--- a/src/game.c
+++ b/src/game.c
@@ -823,7 +823,7 @@ static void game_handle_input_mouse(int x, int y, int state)
switch (ebx & 0xFF) {
case 2:
if (*((uint8*)edx) == 0)
- RCT2_CALLPROC_X(0x006B4857, eax, 0, ecx, 0, 0, 0, 0);
+ RCT2_CALLPROC_X(0x006B4857, eax, 0, ecx, edx, 0, 0, 0);
break;
case 3:
RCT2_CALLPROC_X(0x006CC056, eax, 0, ecx, edx, 0, 0, 0);
diff --git a/src/graph.c b/src/graph.c
index d29dab4415..9cb39f564c 100644
--- a/src/graph.c
+++ b/src/graph.c
@@ -54,7 +54,7 @@ static void graph_draw_line_a_uint8(rct_drawpixelinfo *dpi, uint8 *history, int
x = baseX;
for (i = count - 1; i >= 0; i--) {
if (history[i] != 0 && history[i] != 255) {
- y = baseY + (history[i] * 100) / 256;
+ y = baseY + ((255 - history[i]) * 100) / 256;
if (lastX != -1) {
gfx_draw_line(dpi, lastX + 1, lastY + 1, x + 1, y + 1, 10);
@@ -78,7 +78,7 @@ static void graph_draw_line_b_uint8(rct_drawpixelinfo *dpi, uint8 *history, int
x = baseX;
for (i = count - 1; i >= 0; i--) {
if (history[i] != 0 && history[i] != 255) {
- y = baseY + (history[i] * 100) / 256;
+ y = baseY + ((255 - history[i]) * 100) / 256;
if (lastX != -1)
gfx_draw_line(dpi, lastX, lastY, x, y, 21);
diff --git a/src/language.c b/src/language.c
index f1fb93736f..acc06443d5 100644
--- a/src/language.c
+++ b/src/language.c
@@ -52,6 +52,24 @@ char **language_strings = NULL;
static int language_open_file(const char *filename);
+static int utf8_get_next(char *char_ptr, char **nextchar_ptr)
+{
+ int result;
+ int numBytes;
+
+ if (!(char_ptr[0] & 0x80)) {
+ result = char_ptr[0];
+ numBytes = 1;
+ } else if (!(char_ptr[0] & 0x20)) {
+ result = ((char_ptr[0] & 0x1F) << 6) | (char_ptr[1] & 0x3F);
+ numBytes = 2;
+ }
+
+ if (nextchar_ptr != NULL)
+ *nextchar_ptr = char_ptr + numBytes;
+ return result;
+}
+
const char *language_get_string(rct_string_id id)
{
const char *rct = RCT2_ADDRESS(0x009BF2D4, const char*)[id];
@@ -114,12 +132,21 @@ static int language_open_file(const char *filename)
for (i = 0; i < language_buffer_size; i++) {
char *src = &language_buffer[i];
+ // Handle UTF-8
+ char *srcNext;
+ int utf8Char = utf8_get_next(src, &srcNext);
+ i += srcNext - src - 1;
+ if (utf8Char > 0xFF)
+ utf8Char = '?';
+ else if (utf8Char > 0x7F)
+ utf8Char &= 0xFF;
+
switch (mode) {
case 0:
// Search for a comment
- if (*src == '#') {
+ if (utf8Char == '#') {
mode = 3;
- } else if (*src == ':' && string_no != -1) {
+ } else if (utf8Char == ':' && string_no != -1) {
// Search for colon
dst = src + 1;
language_strings[string_no] = dst;
@@ -134,19 +161,19 @@ static int language_open_file(const char *filename)
break;
case 1:
// Copy string over, stop at line break
- if (*src == '{') {
+ if (utf8Char == '{') {
token = src + 1;
mode = 2;
- } else if (*src == '\n' || *src == '\r') {
+ } else if (utf8Char == '\n' || *src == '\r') {
*dst = 0;
mode = 0;
} else {
- *dst++ = *src;
+ *dst++ = utf8Char;
}
break;
case 2:
// Read token, convert to code
- if (*src == '}') {
+ if (utf8Char == '}') {
int tokenLength = min(src - token, sizeof(tokenBuffer) - 1);
memcpy(tokenBuffer, token, tokenLength);
tokenBuffer[tokenLength] = 0;
@@ -158,7 +185,7 @@ static int language_open_file(const char *filename)
}
break;
case 3:
- if (*src == '\n' || *src == '\r') {
+ if (utf8Char == '\n' || utf8Char == '\r') {
mode = 0;
}
}
diff --git a/src/widget.c b/src/widget.c
index 3cf0aeb95c..1006ca3f13 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -318,11 +318,11 @@ static void widget_tab_draw(rct_drawpixelinfo *dpi, rct_window *w, int widgetInd
b = w->y + widget->bottom;
// Get the colour and image
- colour = w->colours[widget->colour] << 19;
+ colour = w->colours[widget->colour];
image = widget->image + 2;
// Draw coloured image
- gfx_draw_sprite(dpi, image | colour, l, t, 0);
+ gfx_draw_sprite(dpi, image | (colour << 19), l, t, 0);
}
/**
diff --git a/src/window.h b/src/window.h
index c8d90fc870..9629975068 100644
--- a/src/window.h
+++ b/src/window.h
@@ -375,6 +375,7 @@ void window_park_rating_open();
void window_finances_open();
void window_new_campaign_open(int campaignType);
void window_ride_list_open();
+void window_new_ride_open();
void window_banner_open();
void window_cheats_open();
void window_research_open();
diff --git a/src/window_game_top_toolbar.c b/src/window_game_top_toolbar.c
index 20e9702f33..e5fe50057d 100644
--- a/src/window_game_top_toolbar.c
+++ b/src/window_game_top_toolbar.c
@@ -153,8 +153,27 @@ void window_game_top_toolbar_open()
WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5
);
window->widgets = window_game_top_toolbar_widgets;
- window->enabled_widgets |= (1 | 2 | 4 | 8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 |
- 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000 | 0x20000);
+
+ window->enabled_widgets |=
+ (1 << WIDX_PAUSE) |
+ (1 << WIDX_FILE_MENU) |
+ (1 << WIDX_ZOOM_OUT) |
+ (1 << WIDX_ZOOM_IN) |
+ (1 << WIDX_ROTATE) |
+ (1 << WIDX_VIEW_MENU) |
+ (1 << WIDX_MAP) |
+ (1 << WIDX_LAND) |
+ (1 << WIDX_WATER) |
+ (1 << WIDX_SCENERY) |
+ (1 << WIDX_PATH) |
+ (1 << WIDX_CONSTRUCT_RIDE) |
+ (1 << WIDX_RIDES) |
+ (1 << WIDX_PARK) |
+ (1 << WIDX_STAFF) |
+ (1 << WIDX_CLEAR_SCENERY) |
+ (1ULL << WIDX_FASTFORWARD) |
+ (1ULL << WIDX_RESEARCH);
+
window_init_scroll_widgets(window);
window->colours[0] = 7;
window->colours[1] = 12;
@@ -171,22 +190,13 @@ static void window_game_top_toolbar_mouseup()
short widgetIndex;
rct_window *w, *mainWindow;
- #ifdef _MSC_VER
- __asm mov widgetIndex, dx
- #else
- __asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
- #endif
-
- #ifdef _MSC_VER
- __asm mov w, esi
- #else
- __asm__ ( "mov %[w], esi " : [w] "+m" (w) );
- #endif
-
+ window_mouse_up_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_PAUSE:
game_do_command(0, 1, 0, 0, GAME_COMMAND_TOGGLE_PAUSE, 0, 0);
+ // Not sure where this was done in the original code
+ w->pressed_widgets ^= (1 << WIDX_PAUSE);
break;
case WIDX_FASTFORWARD:
// This is an excellent place to add in debugging statements and
@@ -210,7 +220,6 @@ static void window_game_top_toolbar_mouseup()
window_rotate_camera(mainWindow);
break;
case WIDX_MAP:
- //RCT2_CALLPROC_EBPSAFE(0x0068C88A);
window_map_open();
break;
case WIDX_CLEAR_SCENERY:
@@ -261,7 +270,7 @@ static void window_game_top_toolbar_mouseup()
}
break;
case WIDX_CONSTRUCT_RIDE:
- RCT2_CALLPROC_EBPSAFE(0x006B3CFF);
+ window_new_ride_open();
break;
case WIDX_RIDES:
window_ride_list_open();
@@ -271,7 +280,6 @@ static void window_game_top_toolbar_mouseup()
break;
case WIDX_STAFF:
window_staff_open();
- //RCT2_CALLPROC_EBPSAFE(0x006BD3CC);
break;
case WIDX_GUESTS:
window_guest_list_open();
@@ -532,6 +540,18 @@ static void window_game_top_toolbar_invalidate()
w->pressed_widgets |= (1 << WIDX_FASTFORWARD);
else
w->pressed_widgets &= ~(1 << WIDX_FASTFORWARD);
+
+ // Zoomed out/in disable. Not sure where this code is in the original.
+ if (window_get_main()->viewport->zoom == 0){
+ w->disabled_widgets |= (1 << WIDX_ZOOM_IN);
+ }
+ else if (window_get_main()->viewport->zoom == 3){
+ w->disabled_widgets |= (1 << WIDX_ZOOM_OUT);
+ }
+ else
+ {
+ w->disabled_widgets &= ~((1 << WIDX_ZOOM_IN) | (1 << WIDX_ZOOM_OUT));
+ }
}
/**
diff --git a/src/window_new_ride.c b/src/window_new_ride.c
index edbb45d96e..79137b0b29 100644
--- a/src/window_new_ride.c
+++ b/src/window_new_ride.c
@@ -33,6 +33,24 @@ enum {
WINDOW_NEW_RIDE_TAB_RESEARCH
} WINDOW_RIDE_CONSTRUCTION_TAB;
+enum {
+ WIDX_BACKGROUND,
+ WIDX_TITLE,
+ WIDX_CLOSE,
+ WIDX_PAGE_BACKGROUND,
+ WIDX_TAB_1,
+ WIDX_TAB_2,
+ WIDX_TAB_3,
+ WIDX_TAB_4,
+ WIDX_TAB_5,
+ WIDX_TAB_6,
+ WIDX_TAB_7,
+
+ WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP,
+ WIDX_LAST_DEVELOPMENT_GROUP,
+ WIDX_LAST_DEVELOPMENT_BUTTON
+};
+
/**
*
* rct2: 0x006ACA58
@@ -55,4 +73,54 @@ void window_new_ride_init_vars() {
}
RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_INFORMATION_TYPE, uint8) = 0;
+}
+
+/**
+ *
+ * rct2: 0x006B3CFF
+ */
+void window_new_ride_open()
+{
+ rct_window *w;
+
+ w = window_bring_to_front_by_id(WC_CONSTRUCT_RIDE, 0);
+ if (w != NULL)
+ return;
+
+ // Not sure what these windows are
+ window_close_by_id(161, 0);
+ window_close_by_id(162, 0);
+
+ w = window_create_auto_pos(601, 370, (uint32*)0x0098E354, WC_CONSTRUCT_RIDE, 0x400);
+ w->widgets = (rct_widget*)0x009AEBF4;
+ w->enabled_widgets =
+ (1 << WIDX_CLOSE) |
+ (1 << WIDX_TAB_1) |
+ (1 << WIDX_TAB_2) |
+ (1 << WIDX_TAB_3) |
+ (1 << WIDX_TAB_4) |
+ (1 << WIDX_TAB_5) |
+ (1 << WIDX_TAB_6) |
+ (1 << WIDX_TAB_7) |
+ (1 << 14) |
+ (1 << 15);
+ window_init_scroll_widgets(w);
+
+ w->frame_no = 0;
+ w->colours[0] = 24;
+ w->colours[1] = 26;
+ w->colours[2] = 26;
+ w->var_480 = -1;
+ w->var_482 = -1;
+ RCT2_GLOBAL(0x00F43866, sint16) = -1;
+
+ RCT2_CALLPROC_EBPSAFE(0x006B6F3E);
+
+ w->var_482 = RCT2_ADDRESS(0x00F43825, sint16)[RCT2_GLOBAL(0x00F43824, uint8)];
+ if (w->var_482 == -1)
+ w->var_482 = RCT2_GLOBAL(0x00F43523, sint16);
+
+ w->width = 1;
+ RCT2_CALLPROC_EBPSAFE(0x006B3DF1); // initialise window size and widgets
+ RCT2_CALLPROC_EBPSAFE(0x006B7220);
}
\ No newline at end of file
diff --git a/src/window_peep.c b/src/window_peep.c
index 72be7b5007..13376b714c 100644
--- a/src/window_peep.c
+++ b/src/window_peep.c
@@ -129,7 +129,8 @@ uint32 window_peep_page_enabled_widgets[] = {
void window_peep_open(rct_peep* peep){
if (peep->type == PEEP_TYPE_STAFF){
- RCT2_CALLPROC_X(0x006989E9, 0, 0, 0, (int)peep, 0, 0, 0);
+ window_staff_peep_open(peep);
+ return;
}
rct_window* window;
@@ -151,7 +152,7 @@ void window_peep_open(rct_peep* peep){
window->min_height = 157;
window->max_width = 500;
window->max_height = 450;
- window->flags = 8;
+ window->flags = 1 << 8;
window->no_list_items = 0;
window->selected_list_item = -1;
window->colours[0] = 1;
@@ -173,35 +174,3 @@ void window_peep_open(rct_peep* peep){
window_init_scroll_widgets(window);
RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0);
}
-
-/**
-*
-* rct2: 0x006BEE98
-*/
-void window_staff_peep_open(rct_peep* peep)
-{
- rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index);
- if (!w) {
- int eax, ebx, ecx, edx, esi, edi;
-
- eax = peep->sprite_index;
- ecx = WC_PEEP;
- edx = peep->sprite_index;
-
- RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep);
- w = (rct_window*)esi;
- }
-
- int PEEP_BACKGROUND_IDX = 0;
- w->widgets = RCT2_GLOBAL(0x992998, rct_widget*);
- w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32);
- w->var_020 = RCT2_GLOBAL(0x9929BC, uint32);
- w->event_handlers = (uint32*)RCT2_GLOBAL(0x9929A4, uint32);
- w->pressed_widgets = 0;
- RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0);
- window_init_scroll_widgets(w);
- RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0);
- if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) {
- RCT2_CALLPROC_X(w->event_handlers[1], 0, 0, 0, 10, (int)w, 0, 0);
- }
-}
\ No newline at end of file
diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c
new file mode 100644
index 0000000000..d4bd010646
--- /dev/null
+++ b/src/window_staff_peep.c
@@ -0,0 +1,244 @@
+/*****************************************************************************
+* Copyright (c) 2014 Ted John, Duncan Frost
+* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
+*
+* This file is part of OpenRCT2.
+*
+* OpenRCT2 is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see .
+*****************************************************************************/
+
+#include "addresses.h"
+#include "game.h"
+#include "peep.h"
+#include "string_ids.h"
+#include "sprite.h"
+#include "sprites.h"
+#include "widget.h"
+#include "window.h"
+#include "window_dropdown.h"
+
+enum WINDOW_STAFF_PEEP_PAGE {
+ WINDOW_STAFF_PEEP_OVERVIEW,
+ WINDOW_STAFF_PEEP_OPTIONS,
+ WINDOW_STAFF_PEEP_STATISTICS,
+};
+
+enum WINDOW_STAFF_PEEP_WIDGET_IDX {
+ WIDX_BACKGROUND,
+ WIDX_TITLE,
+ WIDX_CLOSE,
+ WIDX_RESIZE,
+ WIDX_TAB_1,
+ WIDX_TAB_2,
+ WIDX_TAB_3,
+ WIDX_TAB_4,
+ WIDX_VIEWPORT,
+ WIDX_BTM_LABEL,
+ WIDX_PATROL,
+ WIDX_RENAME,
+ WIDX_LOCATE,
+ WIDX_FIRE
+};
+
+void window_staff_peep_emptysub(){};
+
+rct_widget window_staff_peep_overview_widgets[] = {
+ { WWT_FRAME, 0, 0, 189, 0, 179, 0x0FFFFFFFF, STR_NONE }, // Panel / Background
+ { WWT_CAPTION, 0, 1, 188, 1, 14, 0x361, STR_WINDOW_TITLE_TIP }, // Title
+ { WWT_CLOSEBOX, 0, 177, 187, 2, 13, 0x338, STR_CLOSE_WINDOW_TIP }, // Close x button
+ { WWT_RESIZE, 1, 0, 189, 43, 179, 0x0FFFFFFFF, STR_NONE }, // Resize
+ { WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, 1939 }, // Tab 1
+ { WWT_TAB, 1, 34, 64, 17, 43, 0x2000144E, 1945}, // Tab 2
+ { WWT_TAB, 1, 65, 95, 17, 43, 0x2000144E, 2348}, // Tab 3
+ { WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_NONE}, // Tab 4
+ { WWT_VIEWPORT, 1, 3, 164, 47, 166, 0x0FFFFFFFF, STR_NONE}, // Viewport
+ { WWT_12, 1, 3, 164, 167, 177, 0x0FFFFFFFF, STR_NONE }, // Label at bottom of viewport
+ { WWT_FLATBTN, 1, 165, 188, 45, 68, 0x1436, 1706}, // Pickup Button
+ { WWT_FLATBTN, 1, 165, 188, 69, 92, 0x1437, 1708}, // Patrol Button
+ { WWT_FLATBTN, 1, 165, 188, 93, 116, 0x1430, 1056}, // Rename Button
+ { WWT_FLATBTN, 1, 165, 188, 117, 140, 0x142F, 1027}, // Locate Button
+ { WWT_FLATBTN, 1, 165, 188, 141, 164, 0x142D, 1705}, // Fire Button
+ { WIDGETS_END },
+};
+
+rct_widget *window_staff_peep_page_widgets[] = {
+ window_staff_peep_overview_widgets
+};
+
+// 0x992AEC
+static void* window_staff_peep_overview_events[] = {
+ (void*)0x6BDFF8,
+ (void*)0x6BDF55,
+ (void*)0x6BE558,
+ (void*)0x6BDF98,
+ (void*)0x6BDFA3,
+ window_staff_peep_emptysub,
+ (void*)0x6BE602,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ (void*)0x6BDFD8,
+ (void*)0x6BDFC3,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ (void*)0x6BDFAE,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ (void*)0x6BDFED,
+ (void*)0x6BE5FC,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ window_staff_peep_emptysub,
+ (void*)0x6BDD91, //Invalidate
+ (void*)0x6BDEAF, //Paint
+ (void*)0x6BE62A
+};
+
+void* window_staff_peep_page_events[] = {
+ window_staff_peep_overview_events
+};
+
+uint32 window_staff_peep_page_enabled_widgets[] = {
+ (1 << WIDX_CLOSE) |
+ (1 << WIDX_TAB_1) |
+ (1 << WIDX_TAB_2) |
+ (1 << WIDX_TAB_3) |
+ (1 << WIDX_PATROL) |
+ (1 << WIDX_RENAME) |
+ (1 << WIDX_LOCATE) |
+ (1 << WIDX_FIRE) |
+ (1 << 14)
+};
+
+
+/**
+* rct2: 0x006BED21
+*
+*/
+void sub_6BED21(rct_window* w, rct_peep* peep)
+{
+ int eax = 0 | 0x80;
+
+ if (peep->staff_type == 2) {
+ eax |= 0x20;
+ }
+
+ //RCT2_CALLFUNC_X(0x698827, 0, 0, 0, 0, 0, 0, 0);
+ // sub_698827
+ // This is here due to needing the Carry Flag.
+
+ int CF = 0;
+ int res = RCT2_GLOBAL(0x982004 + peep->state, uint8) & 1;
+
+ if (res == 0) {
+ CF = 1;
+ }
+ else {
+ eax = eax & eax;
+ }
+
+ // end sub_698827
+
+ int a = 0;
+
+ // pop esi
+ if (CF == 1 && w->page == 0) {
+ eax |= 0x400; //or eax, 400h
+
+ a = w->disabled_widgets & (1 << 0xA); //bt dword ptr[esi + 10h], 0Ah
+
+ }
+
+ if (a == 0) {
+ CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr [esi+10h], 0Ah
+ if (CF == 1) {
+ window_invalidate(w);
+ }
+ }
+
+ w->disabled_widgets = eax;
+}
+
+/**
+* Create the window for a specific peep.
+*
+* rct2: 0x006BEF1B
+*/
+rct_window* sub_6BEF1B(rct_peep* peep)
+{
+ rct_window* w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, WC_PEEP, (uint16)0x400);
+
+ w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*);
+ w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32);
+ w->number = peep->sprite_index;
+ w->page = 0;
+ w->var_482 = 0;
+ w->frame_no = 0;
+
+ RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing, var_494 should perhaps be uint16?
+
+ sub_6BED21(w, peep);
+
+ w->min_width = 190;
+ w->min_height = 180;
+ w->max_width = 500;
+ w->max_height = 450;
+
+ w->flags = 1 << 8;
+
+ w->colours[0] = 1;
+ w->colours[1] = 4;
+ w->colours[2] = 4;
+
+ return w;
+}
+
+/**
+*
+* rct2: 0x006BEE98
+*/
+void window_staff_peep_open(rct_peep* peep)
+{
+ rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index);
+ if (!w) {
+ //int eax, ebx, ecx, edx, esi, edi;
+
+ //eax = peep->sprite_index;
+ //ecx = WC_PEEP;
+ //edx = peep->sprite_index;
+
+ //RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep);
+ //w = (rct_window*)esi;
+
+ w = sub_6BEF1B(peep);
+ }
+ w->page = 0;
+ window_invalidate(w);
+
+ w->widgets = window_staff_peep_overview_widgets;
+ w->enabled_widgets = window_staff_peep_page_enabled_widgets[0];
+ w->var_020 = RCT2_GLOBAL(0x9929BC, uint32);
+ w->event_handlers = window_staff_peep_page_events[0];
+ w->pressed_widgets = 0;
+ //RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0);
+ sub_6BED21(w, peep);
+ window_init_scroll_widgets(w);
+ RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0);
+ if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) {
+ RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_UP], 0, 0, 0, 10, (int)w, 0, 0);
+ }
+}
\ No newline at end of file